使用OWIN& OpenId使用Azure Active Directory对我的基本Web应用程序的用户进行身份验证,如Microsoft的示例项目中的Readme.md所述:https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect
以下项目位于我的web.config中:
<add key="ida:PostLogoutRedirectUri" value="https://localhost:44320/" />
Startup.Auth如下:
private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];
private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"];
private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
RedirectUri = "https://localhost:44320/Home/About",
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = context =>
{
context.HandleResponse();
context.Response.Redirect("/Error?message=" + context.Exception.Message);
return Task.FromResult(0);
}
}
});
}
}
,microsoft.com网站也不会重定向
答案 0 :(得分:2)
我花了很多时间来正确地弄清楚如何让它发挥作用。尽管 3 年前我们只是没有打扰。互联网上似乎有很多人提出这个问题,我想确保每个人都能回答这个问题。
以下解决方案适用于标准 Azure AD 出现的问题。在使用组织帐户登录的情况下,它也适用于 Azure AD B2C。 (请注意,此解决方案不包括新的 b2clogin URI 和用户流技术,因为在我提出问题时它不存在)
您用作注销后重定向的 URI 必须在回复 URL 和前端频道注销 URL 中指定。通常,前端通道注销是 IDP 向您的应用程序发送的静默请求,以允许您运行逻辑来清除 cookie,但不会导致重定向。但是当指定注销后重定向时,它似乎也有一个功能,并且必须相同: 小心不要在 URI 的末尾意外添加尾部斜杠。它们在此处和在您的客户端应用程序中必须完全相同。
https://login.microsoftonline.com/<org-name>.onmicrosoft.com/V2.0
形式的权限将不起作用。对于标准 Azure AD,我必须将权限更改为特定租户的 https://login.microsoftonline.com/<tenant-id>/V2.0
形式或 https://login.microsoftonline.com/common/V2.0
,我认为在某些情况下也会使用这种形式。
对于 B2C AD 租户,它仅适用于上述 common
端点。
旁注 1:对于 common
端点,您必须在令牌验证参数中将 ValidateIssuer
设置为 false,否则您将收到异常。正确进行验证超出了此 SO 问题的范围。
旁注 2:在 Google 上搜索此问题时,您可能会遇到一些针对身份服务器进行身份验证的问题的解决方案。解决方案和规范建议您将 id_token_hint 添加到您的注销请求中。这对于我使重定向适用于 Azure AD 而言既不充分也不必要。
答案 1 :(得分:0)
原因是它仅适用于社交帐户。
如果您迁移到新的b2clogin URI(https://docs.microsoft.com/en-us/azure/active-directory-b2c/b2clogin),一切似乎正常,但是在这种情况下,您必须指定仅指定社交帐户的登录策略。我不确定如何将其用于非社交帐户。
对于Work帐户和普通的Azure AD(通常是必须“选择一个帐户”以退出的情况),这似乎也是一个已知问题:https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/36900919-post-logout-redirect-uri-error-stuck-on-office365