2017-02-09 8 views
5

私はIdentity Server 4を使用していますが、私はイントロスペクションエンドポイントを使用しようとしていますが、ドキュメントでは取得できません。IDサーバー4でイントロスペクションエンドポイントを正しく使用する方法は?

ドキュメントはただそこにこの基本的な認証であるとxxxyyy何をする必要がありますなぜ、今、この例

POST /connect/introspect 
Authorization: Basic xxxyyy 

token=<token> 

を与えますか?私のアプリには基本的な認証設定はありません。

services.AddIdentityServer() 
      .AddTemporarySigningCredential() 
      .AddInMemoryApiResources(ApiResourceProvider.GetAllResources()) 
      .AddAspNetIdentity<Usuario>(); 

Configure

app.UseIdentity(); 
app.UseIdentityServer(); 

に今、私はイントロスペクション/ /接続にだけPOSTを試してみた:ConfigureServicesに次のように私はASP.NETコアを使用するだけでセットアップのIdentity Server 4をしました体はちょうどtoken=<token>ですが、それは404を返しました。

私は本当にそれを取得していないと思う。

ASP.NET CoreでIdentity Server 4でイントロスペクションエンドポイントを使用するにはどうすればよいですか?

+0

イントロスペクションエンドポイントで何を達成しようとしていますか? –

+1

トークンの正当性を検証しようとしています。つまり、トークンが期限切れになっている可能性があります。トークンが有効なトークンではない可能性があります。私はこれを使用して検証できるようにしたい。ちょっと調べてみると、イントロスペクションのエンドポイントはそれを行う方法であることがわかりましたが、実際にどのように使用されているのかは分かりません。 – user1620696

答えて

3

イントロスペクションは、通常、着信トークンを検証するためにAPIによって使用されます。また、イントロスペクションエンドポイントには、仕様ごとの認証が必要です。

https://identityserver4.readthedocs.io/en/release/reference/api_resource.html

そして、イントロスペクションのエンドポイントに対して認証するAPI名/秘密を使用します。

あなたはセットアップにAPIの秘密を必要としています。基本認証を使用するか、フォームに値を投稿します。

+4

OP:@leastprivilegeの答えを少し拡張するには、文字列 '' [yourApiName]:[yourApiSecret] ''をbase64でエンコードし、それを 'Authorization'ヘッダ' basic'値として使用します。 – Mashton

0

IdSvr4の実装は素晴らしかったですが、ドキュメントがたくさん残されていました。私は、インターネット上で検索して、うまくいくソリューションを考え出すことができました。 「スペックを読む」ように言われても、あなたが概念を初めて知ったときには必ずしも役立つとは限りません。これはフォーラムでたくさん起こります。

したがって、POST /connect/introspectに渡す必要があるのは、の範囲の秘密です。

config.csクラスを変更すると、クイックスタートを構成できます。カスタマイズした場合、またはクイックスタートを使用していない場合は、使用するデータストアをすべて更新する必要がありますが、コンセプトは明確になるはずです。

public static IEnumerable<ApiResource> GetApiResources() 
    { 
     return new List<ApiResource> 
     { 
      new ApiResource("MyResource", "My_Resource_DisplayName") 
      { 
       ApiSecrets = new List<Secret> 
       { 
        new Secret("hello".Sha256()) 
       }, 
       Scopes= 
       { 
        new Scope("MY_CUSTOM_SCOPE") 
       } 
      } 
     }; 
    } 

今...
1.クライアントがスコープMY_CUSTOM_SCOPE
2.ベアラトークンを取得するときにスコープMY_CUSTOM_SCOPEを要求していることを確認していることを確認してください。

さて、このようなAPIのリソース名と秘密のSHA256ハッシュ行います。ユーザ名はMyResourceで、パスワードがOBV(hello平文で

Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", userName, password)));

を独自の値を使用します!) - このようになります文字列で終わる必要があります。今TXlSZXNvdXJjZTpoZWxsbw==

、あなたがいる限り、あなたのベアラトークンがスコープMY_CUSTOM_SCOPE(または何を持っているとして、だから... ... IDSvr4に

POST /connect/introspect 
Authorization: Basic TXlSZXNvdXJjZTpoZWxsbw== 
Accept: application/json 
Content-Type: application/x-www-form-urlencoded 

token=<YOUR_TOKEN> 

を投稿することができますあなたはそれを呼び出すことになりました) - これで、IdSvrのイントロスペクションエンドポイントに情報を取得できるようになりました。

希望に役立ちます!

関連する問題