C# 使用accesstoken/AuthenticationResult(如中间件中的UseCookieAuthentication()手动设置cookie
在控制器中的操作中,我们拥有包含AccessToken的AuthenticationResult 我们希望使用此令牌进行手动登录,该令牌等同于UserCookieAuthentication owin中间件。可能吗C# 使用accesstoken/AuthenticationResult(如中间件中的UseCookieAuthentication()手动设置cookie,c#,asp.net-mvc,owin,C#,Asp.net Mvc,Owin,在控制器中的操作中,我们拥有包含AccessToken的AuthenticationResult 我们希望使用此令牌进行手动登录,该令牌等同于UserCookieAuthentication owin中间件。可能吗 public partial class Startup { public void ConfigureAuth(IAppBuilder app) { app.UseCookieAuthentication(new CookieAuthenticati
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
},
});
}
}
我一直在查看HttpContext.GetOwinContext().Authentication.SignIn(),但这不需要任何令牌。在Katana/Owin Github项目中,以下令牌助手使用AuthenticationResponseGrant方法解决了此问题:
result = await authContext.AcquireTokenAsync(resource, clientId, uc);
var principal = await new TokenHelper().GetValidatedClaimsPrincipalAsync(result.AccessToken);
var claimsIdentity = new ClaimsIdentity(principal.Claims, CookieAuthenticationDefaults.AuthenticationType);
var properties = new AuthenticationProperties();
HttpContext.GetOwinContext().Authentication.AuthenticationResponseGrant =
new AuthenticationResponseGrant(claimsIdentity, properties);