Oauth 寻求确认IdentityServer 3不支持自定义声明,无需第二次呼叫服务器
在我看来,我无法将自定义声明(特定于用户)添加到对Identity Server的第一次调用的响应中。有人能证实这个假设吗 以下是我们在应用程序中的操作: 使用ResourceOwner流,我们的web应用程序(服务器端)调用Identity server,发送用户的logonID、密码和作用域 我们得到一份JWT,其中包含标准声明,如sub、idp、客户id;但我们想再增加一个。为了简化,让我们假设另外一个声明是用户的电子邮件地址Oauth 寻求确认IdentityServer 3不支持自定义声明,无需第二次呼叫服务器,oauth,claims-based-identity,Oauth,Claims Based Identity,在我看来,我无法将自定义声明(特定于用户)添加到对Identity Server的第一次调用的响应中。有人能证实这个假设吗 以下是我们在应用程序中的操作: 使用ResourceOwner流,我们的web应用程序(服务器端)调用Identity server,发送用户的logonID、密码和作用域 我们得到一份JWT,其中包含标准声明,如sub、idp、客户id;但我们想再增加一个。为了简化,让我们假设另外一个声明是用户的电子邮件地址 看来我们必须再次调用Identity Server并获取新令牌
看来我们必须再次调用Identity Server并获取新令牌。对吗?我们是否有办法在最初的通话中获得该值?很抱歉回答我自己的问题,但我发现了如何实现这一点
if (context.RequestedClaimTypes != null)
{
List<Claim> newclaims = new List<Claim>();
foreach (Claim claim in context.Subject.Claims)
{
if (context.RequestedClaimTypes.Contains(claim.Type))
{
newclaims.Add(claim);
}
}
context.IssuedClaims = newclaims;
}
return Task.FromResult(context.IssuedClaims);
if(context.RequestedClaimTypes!=null)
{
List newclaims=newlist();
foreach(context.Subject.Claims中的索赔)
{
if(context.RequestedClaimTypes.Contains(claim.Type))
{
新增索赔。添加(索赔);
}
}
context.IssuedClaims=新索赔;
}
返回Task.FromResult(context.IssuedClaims);
非常感谢你。从过去两天开始,我一直在努力寻找解决方案。最后你的详细解释对我起了作用。