User.Identity.GetUserName() 和 GetUserId() return 空字符串 post IdentityServer3 身份验证时
User.Identity.GetUserName() and GetUserId() return empty strings when post IdentityServer3 authentication
我正在使用 IdentityServer3 并希望它能够 User.Identity.GetUserName() 和 User.Identity.GetUserId() return 存储在声明中的值。现在我在声明中看到它们是 "sub" 和 "email"。是否可以:
让 IdentityServer3 return 这些作为声明?我猜他们会是 nameidentifier 和 name.
在客户端应用程序通过身份验证后添加声明,以便 User.Identity 方法可用。
希望这是有道理的,我感谢任何反馈。
我想我明白了。
我在作用域中添加了一个新的作用域 class:
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;
这似乎可以解决问题。
我正在使用 IdentityServer3 并希望它能够 User.Identity.GetUserName() 和 User.Identity.GetUserId() return 存储在声明中的值。现在我在声明中看到它们是 "sub" 和 "email"。是否可以:
让 IdentityServer3 return 这些作为声明?我猜他们会是 nameidentifier 和 name.
在客户端应用程序通过身份验证后添加声明,以便 User.Identity 方法可用。
希望这是有道理的,我感谢任何反馈。
我想我明白了。
我在作用域中添加了一个新的作用域 class:
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;
这似乎可以解决问题。