假设:
Javascript客户端使用访问令牌本身调用api。
问题:
身份验证超过但已恢复的主体缺少某些自定义声明,如"用户名"和" familyName"。我可以看到javascript客户端中的oidc客户端有这些信息
有些声称喜欢" idp"在Javascript和Api客户端中都设置了。但机器人没有明确处理。
主要区别在于idp是access_token的一部分,用户名不是。
api的配置是:
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
var authority = config["identity:authority:url"];
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
LegacyAudienceValidation = true,
Authority = authority,
RequireHttpsMetadata = false,
EnableCaching = false,
ApiName = "MyApp.Read",
});
任何暗示我失踪的东西? (我假设它是在api中读取的某种配置文件?)
解决方法
我使用JwtBearerEvents扩展配置,并在对令牌进行身份验证时使用userclient进行手动读取
JwtBearerEvents = new JwtBearerEvents
{
OnTokenValidated = async context =>
{
string header = context.Request.Headers["Authorization"];
string accessToken = header.Substring(6);
var result = await userInfoClient.GetAsync(accessToken);
但这是预期的方式吗?扩展/配置文件声明是否只能通过手动查询来返回?