2016-07-17 11 views
0

私はOpenID Connect Implicit Flowを使用して実装を開始しました。ブラウザベースのjavascriptアプリケーションでアクセストークンとIDトークンを取得しました。 ASP.NET Core Web APIを使用すると、特定のクレームを持つユーザーからの有効なアクセストークンを介してのみアクセスできます。OpenID Connect暗黙のフローリソースサーバ

トークンを検証してユーザーとその主張を判断するために使用するミドルウェアは何ですか?要求するリソースへのアクセスを許可または拒否できますか?

私はOpenIdConnectAuthenticationミドルウェアを見ましたが、私が見た唯一の実装例は、私のjsアプリケーションが提供しているベアラトークンではなく、 "Cookies"のSignInSchemeを使用しています。

おかげ

答えて

2

何ミドルウェア私はトークン(複数可)を検証し、私はその後、許可または彼らが要求しているリソースへのアクセスを拒否することができますように、ユーザーと自分の主張を決定するために使用しますか?

承認サーバーがJWTトークンを発行する場合は、ASP.NETチームによって開発されたJWTベアラミドルウェア(https://github.com/aspnet/Security/tree/dev/src/Microsoft.AspNetCore.Authentication.JwtBearer)を使用できます。

app.UseJwtBearerAuthentication(new JwtBearerOptions { 
    Authority = Configuration["jwt:authority"], 
    Audience = Configuration["jwt:audience"] 
}); 

ここでサンプルを見つけることができます:https://github.com/aspnet/Security/tree/dev/samples/JwtBearerSample

+0

お返事ありがとうございましたケビン(あなたは素晴らしい仕事をしています!)。私はJwtBearerミドルウェアを見てきましたが、要求で使用する要求を取得するためにUserInfoエンドポイントに要求することは含まれていません。それだけでなく、私はIDトークンで動作するようにすることができますが、アクセストークンではありません(これは、私が読んできたものから、私がこのポストで使用するべきだと思います)。(http://stackoverflow.com/questions/ 38394545 /認証書署名鍵を使用する)。私に何か助けてもらえますか?ありがとうございました! – Steve

+1

理論上、userinfoエンドポイントは、リソースサーバーではなく、認証されたユーザーに関するデータを取得するためにクライアントアプリケーションによってのみ使用されます。アクセストークンには、ユーザーを正しく識別するために必要なすべてのクレームが含まれている必要があります。アクセス・トークンをリソース・サーバーが直接読み取ることができない場合、オプションは許可サーバーが提供するイントロスペクション・エンドポイントを使用することです(サポートされている場合)。 APIのクエリにIDトークンを使用することはお勧めしません。それは発行されていません。 – Pinpoint

+0

もう一度ありがとうございます。それはずっと多くの疑問を投げかけてきました。たとえば、RESTful APIのIDトークンを使用しないでアクセストークンを検証するには、スペックがIDトークンが必要であることを示します(http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowTokenValidation) 。別の質問は、暗黙のフローが、外部IdPを持つRESTfulなapiを持つSPAの正しいフローであるかどうかです。もっとたくさんのあなたは、これらの質問に良い答えと実装を見つけるのに苦労している自分自身から離れて、これらの種類の質問をするフォーラムを知っていますか? – Steve

関連する問題