oAuth2/IdentityServer4について頭を悩ませようとしています。
https://github.com/IdentityServer/IdentityServer4.Samples/tree/dev/Quickstarts/3_ImplicitFlowAuthenticationでサンプル アプリケーションを使用する
MVC アプリケーションの次のコード:
@foreach (var claim in User.Claims)
{
<dt>@claim.Type</dt>
<dd>@claim.Value</dd>
}
ID トークン クレームのように見えるものを返します
nbf
1467173142
exp
1467173442
iss
http://localhost:5000
aud
mvc
nonce
636027699106782287.MDI0YzI5MTQtYmQxNy00MDllLWJmYzQtZjBhYzI2MGNjYmE3MDFmNzg1YmUtM2Y5ZC00YjBiLWEzOGItN2Q3ODRiODJlYjFl
iat
1467173142
c_hash
H2i5QeJKlHM5-s8vUTYlOw
sid
42b58d38e2b7c6cc653492742a08840b
sub
818727
auth_time
1467170555
idp
idsvr
name
Alice Smith
given_name
Alice
family_name
Smith
website
http://alice.com
amr
pwd
API プロジェクトの次のコード
var claims = User.Claims.Select(c => new { c.Type, c.Value });
return new JsonResult(claims);
アクセス トークン クレームのように見えるものを返します
{
"Type": "nbf",
"Value": "1467173142"
},
{
"Type": "exp",
"Value": "1467176742"
},
{
"Type": "iss",
"Value": "http://localhost:5000"
},
{
"Type": "aud",
"Value": "http://localhost:5000/resources"
},
{
"Type": "client_id",
"Value": "mvc"
},
{
"Type": "scope",
"Value": "openid"
},
{
"Type": "scope",
"Value": "profile"
},
{
"Type": "scope",
"Value": "api1"
},
{
"Type": "sub",
"Value": "818727"
},
{
"Type": "auth_time",
"Value": "1467170555"
},
{
"Type": "idp",
"Value": "idsvr"
}
コードは基本的に同じ (ユーザー ID 原則でクレームを返す) であり、名前/電子メールが欠落していますが、API の例にスコープ クレームが含まれていることに注意してください。
トークン フローは基本的に IdentityServer4 => MVC プロジェクト => API プロジェクトです。明らかに、MVC プロジェクトには identityToken とアクセス トークンの両方がありますが、アクセス トークン int User.Claims はロードされません。
私の目標は、MVC プロジェクトの User でスコープ クレームを使用できるようにして、MVC メソッドの Authorize 属性セクションを動作させるポリシーを設定できるようにすることです。
API プロジェクトのスタートアップはこちら: https://github.com/IdentityServer/IdentityServer4.Samples/blob/dev/Quickstarts/3_ImplicitFlowAuthentication/src/Api/Startup.cs
MVC プロジェクトのスタートアップはこちら: https://github.com/IdentityServer/IdentityServer4.Samples/blob/dev/Quickstarts/3_ImplicitFlowAuthentication/src/Api/Startup.cs
ありがとう、デイブ