gpt4 book ai didi

asp.net-mvc - ASP.NET OWIN 中用于外部登录的外部 Cookie

转载 作者:行者123 更新时间:2023-12-02 08:08:15 25 4
gpt4 key购买 nike

我们有一个基于 ASP.NET Mvc 4 构建的旧系统,现在我们希望通过 Azure Active Directory 为当前用户和新用户支持 Signal Sign On。由于我们已经管理了自己的身份验证工作流程,因此 ASP.NET Identity 绝对不适合我们的情况。

我已经成功构建了一个在 OWIN OpenIdConnect 中间件被动模式下运行的演示,而无需使用 ASP.NET Identity。下面的代码可以正确运行:

app.SetDefaultSignInAsAuthenticationType("ExternalCookie");
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "ExternalCookie",
AuthenticationMode = AuthenticationMode.Passive,
});

app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Passive,
ClientId = ClientId,
Authority = Authority

// More code
});

ExternalLoginCallback 操作中:

public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var authManager = Request.GetOwinContext().Authentication;

var result = await authManager.AuthenticateAsync("ExternalCookie");
authManager.SignOut("ExternalCookie");

//More code to convert to local identity
}

即使使用 Google、Facebook 或 Twitter 等其他提供商,这种情况也很常见。我不太清楚的一件事是 ExternalCookie,也许我错过了整件事。我的理解是当外部登录成功时,外部cookie用于存储外部声明身份。然后我们调用:

var result = await authManager.AuthenticateAsync("ExternalCookie");
authManager.SignOut("ExternalCookie");

为了获取外部声明身份,然后将外部身份转换为本地身份。我有点困惑为什么在这种情况下我们必须调用 SignOut 外部 cookie。

另外,我不确定使用外部登录时是否必须使用外部 Cookie,或者我们是否有其他方法而不使用外部 Cookie。

请有人对此做出解释。

最佳答案

要回答你的最后一个问题,你可以在配置外部cookie的startup.auth文件中更改cookie的名称 -

app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

您可以使用字符串代替 DefaultAuthenticationTypes 枚举,并直接指定 cookie 的名称,例如 -

app.UseExternalSignInCookie("myExternalCookie");

关于asp.net-mvc - ASP.NET OWIN 中用于外部登录的外部 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com