asp.net-core-2.0 - Azure B2C 成功登录后动态重定向

标签 asp.net-core-2.0 azure-ad-b2c

我正在使用 .NET Core V2 开发单页应用程序并使用 Azure B2C 身份验证。

我的 Startup.cs 具有以下内容:

    services.AddAuthentication(sharedOptions =>
                    {
                        sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
                    })
                    .AddAzureAdB2CBearer(options => Configuration.Bind("AzureAdB2C", options)); 

public static AuthenticationBuilder AddAzureAdB2CBearer(this AuthenticationBuilder builder)
            => builder.AddAzureAdB2CBearer(_ => { });

        public static AuthenticationBuilder AddAzureAdB2CBearer(this AuthenticationBuilder builder, Action<AzureAdB2COptions> configureOptions)
        {
            builder.Services.Configure(configureOptions);
            builder.Services.AddSingleton<IConfigureOptions<JwtBearerOptions>, ConfigureAzureOptions>();
            builder.Services.AddScoped<IClaimsTransformation, ClaimsTransformer>();
            builder.AddJwtBearer();
            return builder;
        }

我有一个重定向到 B2C 登录页面的登录端点 IE。

https://login.microsoftonline.com/{mydomain}/oauth2/v2.0/authorize?p={mysigninpolicy}&client_id={3}&nonce=defaultNonce&redirect_uri={myredirecturl}&scope=openid&response_type=id_token&response_mode=form_post&prompt=login

我创建了 myredirecturl 的回调端点,它检查来自 B2C 登录的任何错误消息并获取不记名 token 。

我已设置指定了 myredirecturl 的 Azure 登录策略。

然后,我的所有 Controller 都受到 [Authorize] 属性的保护,以防止在未登录的情况下进行访问。

这一切都运行良好。但我希望发生以下情况:

1) 如果我注销并输入 https://mydomain/somecontroller/somemethod

2) 我希望进入登录页面(现在就会发生这种情况)

3) 成功登录后我想自动重定向到 https://mydomain/somecontroller/somemethod

现在不会发生这种情况,我只能被带到主页,因为我无法找到将 ReplyUrl 作为查询字符串参数传递到登录端点,然后从 B2C 回调中检索它的方法。

我希望我的重定向网址是从浏览器提交的任何内容。

如果我使用标准身份验证,我可以这样做:

mydomain/account/login?redirecturl=mydomain/controller/method

最佳答案

找到答案: 如果您在调用 B2C 登录时包含 &state={some value} 参数。

https://login.microsoftonline.com/{mydomain}/oauth2/v2.0/authorize?p={mysigninpolicy}&client_id={3}&nonce=defaultNonce&redirect_uri={myredirecturl}&scope=openid&response_type=id_token&response_mode=form_post&prompt=login&state=myvalue

B2C在redirect_uri中调用的端点也包含此值,因此您可以在成功登录后使用它来重定向用户。

关于asp.net-core-2.0 - Azure B2C 成功登录后动态重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465206/

相关文章:

.net-core - dotnet 核心 2.1 : "Found conflicts between different versions of" when referencing a web project from an xunit project

profile - IdentityServer4 Net Core 2未调用自定义iProfileService

c# - .net 核心控制台应用程序作为 Windows 服务-是否可以在不使用 Kill() 方法的情况下安全地终止已启动进程的执行?

microsoft-graph-api - Microsoft Graph 是否已处理 Azure AD B2C 用户 CRUD?

azure - 如何使用 Graph API 访问 B2C 用户的电子邮件

Azure AD B2C 密码过期

azure - Azure AD B2C 是否将元数据终结点公开为 WS-Federation 依赖方?

azure 广告 ADAL "error":"invalid_grant","error_description":"AADSTS70000: Transmission data parser failure: Authorization Code is malformed or invalid

c# - "The {0} field is required"消息本地化

asp.net-core-2.0 - 在 BuildWebHost 周围使用 "using"语句?