我正在尝试使用Azure AD实现身份验证。在应用程序设置中,我将答复URL设置为https://example.com/myapp/login.aspx。 当我登录时,它会将我重定向到https://example.com而不是指定的网址https://example.com/myapp/login.aspx
如何确保重定向到正确的网址?以下是Startup的代码。
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = ConfigurationManager.AppSettings["owin:ClientId"].ToString(),
Authority = "https://login.microsoftonline.com/yz5036e3-2951-4c11-af4d-da019fa6a57d",
RedirectUri = ConfigurationManager.AppSettings["RedirectUri"].ToString()
});
}
答案 0 :(得分:5)
如何触发登录流程?如果您正在跟踪示例并通过调用https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect/blob/master/WebApp-OpenIDConnect-DotNet/Controllers/AccountController.cs中显示的Challenge来启动登录,您可能需要确保AuthenticationProperties中的RedirectUri指向您最终的URL(如在auth中一样)想要落在。 我知道,它令人难以置信的混乱 - OIDC选项中的RedirectUri属性指向您要在auth协议中使用的重定向,您要在其上接收身份验证令牌的重定向 - 以及AuthenticationProperties中的重定向是在您与身份提供商的交换成功结束后,您希望重定向到的本地URL。由于历史原因,这些名称具有相同的名称。
答案 1 :(得分:1)
在我的案例中,网站位于虚拟目录下(在应用程序中转换)。对于登录URL,例如http://example.com/myapp/login.aspx,它正在将用户重定向到http://example.com。如果我将RedirectUri设置为myapp / AfterLogin.aspx,那就可以了。
HttpContext.Current.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties { RedirectUri = "myapp/AfterLogin.aspx", },
OpenIdConnectAuthenticationDefaults.AuthenticationType);