我正在使用IdentityServer3,并希望User.Identity.GetUserName()和User.Identity.GetUserId()返回存储在Claims中的值。现在我在索赔中看到它们是“子”和“电子邮件”。是否有可能:
让IdentityServer3将这些作为声明返回?我猜它们会是nameidentifier和name。
客户端应用验证后添加声明,以便User.Identity方法可用。
希望这是有道理的,我感谢任何反馈。
答案 0 :(得分:1)
我想我已经明白了。
我在Scopes类中添加了一个新的Scope:
new Scope
{
Name = "public",
DisplayName = "Public scope",
Type = ScopeType.Identity,
IncludeAllClaimsForUser = true
}
然后我在AccountController的SignIn操作中修改了我的登录URL:
var url = Settings.AuthorizeEndpoint +
"?client_id=" + Settings.ClientId +
"&response_type=id_token" +
"&scope=openid email profile public" +
"&redirect_uri=" + Settings.RedirectUri +
"&response_mode=form_post" +
"&state=" + state +
"&nonce=" + nonce;
这似乎可以解决问题。