L T*_*L T 5 .net c# azure-active-directory asp.net-core-mvc .net-core
我有一个ASP.NET Core 2.1 MVC应用程序,并且正在尝试使用Azure AD进行身份验证。该应用程序重定向到Microsoft登录页面,但是当我注销然后返回到该应用程序的主页时,它会自动重新登录。
我曾尝试致电https://login.microsoftonline.com/common/oauth2/v2.0/logout并清除cookie,但无济于事。
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/";
options.TokenValidationParameters.ValidateIssuer = false;
options.Events.OnRedirectToIdentityProviderForSignOut = async context =>
{
var h = new HttpClient();
var r = await h.GetAsync($"https://login.microsoftonline.com/common/oauth2/v2.0/logout?post_logout_redirect_uri=https%3A%2F%2Flocalhost%2%3A5001%2F");
foreach (var cookie in context.Request.Cookies.Keys)
{
context.Response.Cookies.Delete(cookie);
}
};
options.Events.OnTokenResponseReceived = async conext =>
{
var t = 1;
};
});
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
public async Task<IActionResult> Logout()
{
var result = SignOut("AzureAD", "AzureADOpenID", "AzureADCookie");
return result;
}
Run Code Online (Sandbox Code Playgroud)
请检查我将 Azure AD 身份验证添加到 ASP.NET Core 2.1 MVC 应用程序的方法。该工具将为您添加身份验证代码。您需要做的是将登录/退出按钮绑定到该方法。
1.单击“连接的服务”->选择“使用 Azure Active Directory 进行身份验证”。
2.您需要提供一个登录按钮来触发登录页面。
3.在域中输入您的租户名称并选择提供应用程序设置的方式。
4.单击完成按钮完成配置。
5.删除app.UseBrowserLink()Startup.cs中的内容。
6.调用SignOut()方法来AccountController.cs注销用户。效果很好。
[HttpGet]
public IActionResult SignOut()
{
var callbackUrl = Url.Action(nameof(SignedOut), "Account", values: null, protocol: Request.Scheme);
return SignOut(
new AuthenticationProperties { RedirectUri = callbackUrl },
CookieAuthenticationDefaults.AuthenticationScheme,
OpenIdConnectDefaults.AuthenticationScheme);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
864 次 |
| 最近记录: |