我在Azure Active Directory网站配置回复URL中指定了两个URL。一个是在我运行本地代码时重定向到我的localhost环境,另一个是在我运行prod网站时重定向到我的Azure托管网站。但Azure Active目录似乎忽略了该设置。它只使用一个或另一个URL,但不能同时使用两者 这是我的startup.Auth.cs
public partial class Startup
{
private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];
private static string tenantId = ConfigurationManager.AppSettings["ida:TenantId"];
private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];
private static string authority = aadInstance + tenantId;
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.GivenName;
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
TokenValidationParameters = new TokenValidationParameters
{
RoleClaimType = "roles"
},
});
}
}
这是我的startup.cs
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
最后这是我的web.config设置
<appSettings>
<add key="ida:ClientId" value="*************************" />
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
<add key="ida:AppKey" value="******************************" />
<add key="ida:TenantId" value="****************************" />
<add key="ida:PostLogoutRedirectUri" value="url of production website" />
<add key="ida:Domain" value="company domain" />
</appSettings>
我不知道为什么会出现这种重定向
答案 0 :(得分:1)
我找到了解决问题的方法
您应该在Startup.Auth中的OpenIdConnectAuthenticationOptions中添加以下代码
Notifications = new OpenIdConnectAuthenticationNotifications()
{
RedirectToIdentityProvider = (context) =>
{
context.ProtocolMessage.RedirectUri = HttpContext.Current.Request.Url.GetLeftPart(System.UriPartial.Path);
context.ProtocolMessage.PostLogoutRedirectUri = new UrlHelper(HttpContext.Current.Request.RequestContext).Action("Index", "Home", null, HttpContext.Current.Request.Url.Scheme);
context.ProtocolMessage.Resource = GraphAPIIdentifier;
return Task.FromResult(0);
}}
这样重定向uri是根据您运行它的机器动态的
希望这会有所帮助。