IdentityServer 3では、通知で「SecurityTokenValidated
」というイベントを使用して、自分のIDと名前とクレームを作成しました。例えば、私はこのようなリソースの所有者のワークフローと後でアクセスN APIにaccess_token
を記憶:ASP.NETの通知IdentityServer v4のコアクライアント
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
AuthenticationType = "oidc",
// ...
Notifications = new OpenIdConnectAuthenticationNotifications
{
SecurityTokenValidated = async n =>
{
var nid = new ClaimsIdentity(
n.AuthenticationTicket.Identity.AuthenticationType,
"name",
ClaimTypes.Role);
nid.AddClaim(new Claim("id_token", n.ProtocolMessage.IdToken));
nid.AddClaim(new Claim("access_token", n.ProtocolMessage.AccessToken));
nid.AddClaim(new Claim("expires_at", DateTimeOffset.Now.AddSeconds(int.Parse(n.ProtocolMessage.ExpiresIn)).ToString()));
}
}
}
IdentityServer 4でASP.NETコアの通知プロパティはありません。 私は主張の多くが自動的に生成されたが、そこに私はaccess_token
も自動的に設定されているアイデンティティのユーザ名を取得しないことがわかります
ASP.NETコアで、クライアントの私の現在の構成は、この
のように見えますapp.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
AuthenticationScheme = "oidc",
SignInScheme = "Cookies",
Authority = identityServerUri,
RequireHttpsMetadata = false,
ClientId = clientId,
ResponseType = "id_token token",
Scope =
{
"openid profile email warehouseapi"
},
GetClaimsFromUserInfoEndpoint = true,
SaveTokens = true,
AutomaticAuthenticate = true,
AutomaticChallenge = true,
});
これを行うためにIdentityServer 4が意図する方法は何ですか?
thxイベントは機能しますが、私のaspコアプロジェクトには、GetTokenAsyncメソッド広告HttpContext.Authenticationはありません。 –
を使用して 'Microsoft.AspNetCore.Authentication'を追加してみてください。 –
トークンを取得したいですか? 'TickedReceived'イベントの場合、このようにしてトークンを取得することはできません。この場合、' var token = ctx.Ticket.Properties.GetTokenValue( "access_token"); 'を使うことができます。 –