IdentityServer 3 ではSecurityTokenValidated
、通知のイベントを使用して、名前とクレームで自分の ID を構築しました。たとえば、access_token
後で n API にアクセスするために、次のようなリソース オーナー ワークフローを使用して保存します。
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()));
}
}
}
ASP.NET Core の IdentityServer 4 には Notifications プロパティはありません。多くのクレームが自動的に生成されていることがわかりaccess_token
ますが、ID のユーザー名も自動的に設定されません
ASP.NET Core のクライアントの現在の構成は次のようになります
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で意図された方法は何ですか?