Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用accesstoken/AuthenticationResult(如中间件中的UseCookieAuthentication()手动设置cookie_C#_Asp.net Mvc_Owin - Fatal编程技术网

C# 使用accesstoken/AuthenticationResult(如中间件中的UseCookieAuthentication()手动设置cookie

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

在控制器中的操作中,我们拥有包含AccessToken的AuthenticationResult

我们希望使用此令牌进行手动登录,该令牌等同于UserCookieAuthentication owin中间件。可能吗

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);