身份服务器 4:在 asp.net webform .NET 4.5 上获取访问令牌
Identity server 4: get access toke on asp.net webform .NET 4.5
我正在使用 Identity serve4 进行用户身份验证和授权,我的一个客户是 asp.net 在 .NET 4.5 上编写的网络表单。当用户尝试访问受保护的网络表单时,我将用户重定向到身份服务器进行身份验证。但是在身份验证之后,有一个基于当前登录用户标识的逻辑,为了获取当前用户登录信息,我必须调用一些需要令牌的令牌端点?登录后我检查了网络表单,发现有一些身份验证 cookie。现在我的问题是如何从中获取令牌?在 asp.net 核心上,我们使用下面的 httpcontext 方法获得访问令牌,但我们如何在 asp.net 网络表单上使用 .NET 4.5 获得相同的访问令牌?
var access_token = await HttpContext.GetTokenAsync("access_token")
最简单的方法是在身份验证后将访问令牌保存在 cookie 中。将客户端的代码改成这样:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ResponseType = "id_token token",
Scope = "openid profile api1",
Notifications = new OpenIdConnectAuthenticationNotifications
{
SecurityTokenValidated = n =>
{
n.AuthenticationTicket.Identity.AddClaim(new Claim("access_token", n.ProtocolMessage.AccessToken));
return Task.FromResult(0);
},
}
});
然后您可以从当前用户的声明中检索 access_token,如下所示:
var accessToken = user.FindFirst("access_token").Value;
编辑:
要设置 Identity.Name 添加此代码:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
...
TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
NameClaimType = "name"
}, // This is to set Identity.Name
});
我正在使用 Identity serve4 进行用户身份验证和授权,我的一个客户是 asp.net 在 .NET 4.5 上编写的网络表单。当用户尝试访问受保护的网络表单时,我将用户重定向到身份服务器进行身份验证。但是在身份验证之后,有一个基于当前登录用户标识的逻辑,为了获取当前用户登录信息,我必须调用一些需要令牌的令牌端点?登录后我检查了网络表单,发现有一些身份验证 cookie。现在我的问题是如何从中获取令牌?在 asp.net 核心上,我们使用下面的 httpcontext 方法获得访问令牌,但我们如何在 asp.net 网络表单上使用 .NET 4.5 获得相同的访问令牌?
var access_token = await HttpContext.GetTokenAsync("access_token")
最简单的方法是在身份验证后将访问令牌保存在 cookie 中。将客户端的代码改成这样:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ResponseType = "id_token token",
Scope = "openid profile api1",
Notifications = new OpenIdConnectAuthenticationNotifications
{
SecurityTokenValidated = n =>
{
n.AuthenticationTicket.Identity.AddClaim(new Claim("access_token", n.ProtocolMessage.AccessToken));
return Task.FromResult(0);
},
}
});
然后您可以从当前用户的声明中检索 access_token,如下所示:
var accessToken = user.FindFirst("access_token").Value;
编辑:
要设置 Identity.Name 添加此代码:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
...
TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
NameClaimType = "name"
}, // This is to set Identity.Name
});