带有Azure Active Directory的Web应用程序始终重定向到'〜/ .auth / login / done'URL

时间:2019-07-18 12:04:54

标签: c# azure authentication asp.net-core azure-active-directory

我正在尝试将Azure Active Directory用于Azure中的Web应用。登录后,我总是通过“您已成功登录”消息重定向到“〜/ .auth / login / done” URL。

这是我的Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });

    // Add authentication for Azure Active Directory using the Microsoft.AspNetCore.Authentication.AzureAD.UI:
    services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
            .AddAzureAD(options => Configuration.Bind("AzureAd", options));

    services
        .AddMvc(options =>
        {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));
        })
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)            
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseBrowserLink();
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();
    app.UseAuthentication();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

在Azure门户上,我已将“重定向URI”设置为默认的“〜/ .auth / login / aad / callback”。

这是我的appsettings.json:

{
 "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "mycompanyname.onmicrosoft.com",
    "TenantId": "... (my tenant ID) ...",
    "ClientId": "... (my client ID) ...",
    "CallbackPath": "/.auth/login/aad/callback"
 }
}

为什么我不能访问应用程序的任何页面,为什么我总是重定向“〜/ .auth / login / done” URL?

2 个答案:

答案 0 :(得分:0)

您可以使用post_login_redirect_url查询字符串参数来完成此操作。

您要做的是将用户导航到

 /.auth/login/aad?post_login_redirect_url=YOUR_URL

例如,如果要在登录后自动将用户导航到/welcome.html,则可以将登录重定向设置为~/.auth/login/aad?post_login_redirect_url=/welcome.html,然后用户将被重定向到该页面,而不是常规页面。欢迎页面。请参阅此thread

答案 1 :(得分:0)

您可以将CallbackPath设置为:"CallbackPath": "/signin-oidc"

此外,请确保已在 Azure Portal 中进行了注册。转到“应用程序注册>身份验证”标签>然后添加https://localhost:{yourport}/signin-oidc(如果是正式版应用程序,则添加https://{yourDomain}/signin-oidc

您可以在此处找到更多详细信息:https://social.msdn.microsoft.com/Forums/azure/en-US/99913f64-d692-4e10-9178-2ded24e264d8/reply-url-same-as-callback-path?forum=WindowsAzureAD