我在IdentityServer 4中实施了IDP。我的Web应用程序客户端(在Mvc 5中实现)使用IDP进行身份验证,但现在我需要从请求中获取访问令牌。
在.Net Core中执行此操作的方法是使用Microsoft.AspNetCore.Authentication.AuthenticationTokenExtensions
,如此:
HttpContext.Authentication.GetTokenAsync("acccess_token")
我希望能够在我的.net Mvc5 Web应用程序客户端中执行相同操作,但我找不到任何具有类似实现的nuget包或命名空间。能够在MVC5而不是.net Core中执行此操作非常重要。以前有人遇到过这个吗?
PS-另外值得一提的是我正在使用OpenIdConnect
答案 0 :(得分:2)
在您的控制器中,您可以使用以下代码获取令牌:
var token = ActionContext.Request.Headers.Authorization.Parameter;
答案 1 :(得分:1)
最近发布的4.1.0 version of Katana现在支持SaveTokens
property(从ASP.NET Core反向移植)。
为了获取访问令牌:
SaveTokens
:app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
// Other options removed for readability
SaveTokens = true,
// Required for the authorization code flow to exchange for tokens automatically
RedeemCode = true
});
var result = await Request.GetOwinContext().Authentication.AuthenticateAsync("Cookies");
string token = result.Properties.Dictionary["access_token"];