标签: azure-ad-b2c

登录 Azure B2C 页面上的内容安全策略错误

在登录/重置密码流程中的不同步骤上单击“下一步/继续”按钮时,Azure B2C 页面会引发内容安全策略错误。如果我输入电子邮件(或没有电子邮件)并在登录的第一步单击“下一步”按钮,则会引发错误,但如果按 Enter 键,则不会出现错误。

图片1:

在此输入图像描述

原因是,一方面,这些页面上的 CSP 不允许使用内联代码,但另一方面,Azure B2C 插入了一些内联代码。表单中的 Fe action="javascript:void(0)"。

图片2:

在此输入图像描述

调试 js 代码显示有一行代码阻止( action="javascript:void(0)")在按 Enter 键时调用此内联操作,并且在单击“下一步”按钮时没有此类阻止。不同步骤上的表单中有几个这样的地方。

这部分代码是由Azure B2C生成的。无法更改 CSP,因为它也在 Azure 端设置。事实上,这个错误并不会阻止登录流程,而是在每个步骤上抛出很多错误

有人有同样的问题并建议如何避免吗?

content-security-policy azure-ad-b2c aad-b2c

6
推荐指数
1
解决办法
1967
查看次数

具有 SSO 的 Azure AD B2C 2FA,无需验证两次

我目前已在 Azure AD B2C 中使用自定义策略实现了以下内容:

  • 用户使用其 Office 或 Google 帐户登录。
  • 如果他们在社交帐户上启用了 2FA,他们就会对自己进行身份验证。
  • 他们被发送回 B2C 并被要求提供 B2C 2FA(我不希望这样,如果他们已经在其社交帐户上进行了 2FA)

有什么方法可以实现用户必须验证两次而不是三次吗?如果用户尚未为其社交帐户设置 2FA,我想保留 2FA。

例如,是否可以检查社交登录是否使用了 2FA?或者是否可以对社交帐户登录实施 2FA?

我的设置使用了以下模板:

azure azure-ad-b2c azure-ad-b2c-custom-policy

6
推荐指数
0
解决办法
299
查看次数

Azure B2C 注销然后登录不会通过密码提示询问用户

我正在使用 Azure AAD B2C 来管理我的用户和身份验证流程。我正在尝试创建一种用户体验,用户可以使用不同的帐户登录。用户应该能够注销其帐户,然后单击登录并能够提供不同的用户名和密码。

但是,目前我退出了。我可以通过 F12 调试器确认所有 cookie 均已清除。然后我单击登录,它让我重新登录到以前的帐户,而无需询问我的用户名和密码。

我不确定发生了什么或为什么。这是我的登录代码。

public IActionResult SignIn([FromRoute] string scheme)
    {
        scheme ??= OpenIdConnectDefaults.AuthenticationScheme;
        var redirectUrl = Url.Content("~/");
        var properties = new AuthenticationProperties { RedirectUri = redirectUrl, AllowRefresh = true };
        properties.Items["policy"] = "B2C_1_SignUpIn";
        return Challenge(properties, scheme);
    }
Run Code Online (Sandbox Code Playgroud)

这是我的退出代码。

public async Task<IActionResult> SignOutAsync([FromRoute] string scheme)
    {
        HttpContext.Session.Clear();
        if (HttpContext.Request.Cookies.Count > 0)
        {
            var test = HttpContext.Request.Cookies.ToList();
            var siteCookies = HttpContext.Request.Cookies.Where(c => c.Key.Contains(".AspNetCore.") || c.Key.Contains("Microsoft.Authentication"));
            foreach (var cookie in siteCookies)
            {
                Response.Cookies.Delete(cookie.Key);
            }
        }

        await …
Run Code Online (Sandbox Code Playgroud)

c# openid-connect azure-ad-b2c .net-6.0

6
推荐指数
1
解决办法
1153
查看次数

User.HasClaim 未成功读取 .NET Core 2.0 Web Api 中的声明属性

将 Authorize 属性与我在 Startup.cs 中定义的策略一起使用时遇到问题。我编辑了我的控制器以手动检查声明。我可以看到包含具有正确范围的范围声明的声明,但是当我手动检查该声明/范围时,它返回为 false。我使用 Azure AD B2C 作为我的身份服务器并成功获得了一个经过验证的令牌。

这是我的 Startup.cs 中的代码:

    services.AddAuthorization(options =>
    {
        var policyRead = new AuthorizationPolicyBuilder()
            .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
            .RequireAuthenticatedUser()
            .RequireClaim("http://schemas.microsoft.com/identity/claims/scope", "vendor.read")
            .Build();
        options.AddPolicy("VendorRead", policyRead);

        var policyWrite = new AuthorizationPolicyBuilder()
            .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
            .RequireAuthenticatedUser()
            .RequireClaim("http://schemas.microsoft.com/identity/claims/scope", "vendor.write")
            .Build();
        options.AddPolicy("VendorWrite", policyWrite);
    });

    services.AddAuthentication(sharedOptions =>
    {
        sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
    }) 
        .AddJwtBearer(jwtOptions =>
        {
            jwtOptions.Authority = $"{Configuration["AzureAdB2C:Instance"]}/{Configuration["AzureAdB2C:TenantId"]}/{Configuration["AzureAdB2C:SignUpSignInPolicyId"]}/v2.0/";
            jwtOptions.Audience = Configuration["AzureAdB2C:ClientId"];
            jwtOptions.RequireHttpsMetadata = true;
            jwtOptions.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true,
                ValidIssuer = $"{Configuration["AzureAdB2C:Instance"]}/{Configuration["AzureAdB2C:TenantId"]}/v2.0/", …
Run Code Online (Sandbox Code Playgroud)

c# authorization azure-ad-b2c asp.net-core-2.0

5
推荐指数
1
解决办法
5924
查看次数

Azure AD B2C - 基于客户端类型的身份验证代码流与隐式授权流

OAuth 2.0 规范定义了机密和公共客户端。https://tools.ietf.org/html/rfc6749#section-2.1

这是根据 OAuth 2.0 规范的处方

  1. 机密客户端 - Web 应用程序 - 身份验证代码授予流程。
  2. 公共客户端 - 桌面应用程序、移动应用程序、SPA(单页应用程序) - 隐式流程。

但是,根据 Microsoft 文档,AD B2C 的处方如下 https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oauth-code

  1. 机密客户端 - Web 应用程序 - OpenIDConnect 登录(建立在授权代码之上)
  2. 公共客户端 - 桌面应用程序、移动应用程序 - 身份验证代码授予流程
  3. 公共客户端 - SPA(单页应用) - 隐式流程

基于上述推论,我们对 Web 应用程序和 SPA 很清楚,这里没有混淆。

但是,对于桌面和移动应用程序,为什么 Microsoft 建议使用 Auth 代码授予流程而不是隐式流程 [即使根据 Microsoft 文档,它们也是公共客户端]?

oauth-2.0 openid-connect azure-ad-b2c

5
推荐指数
1
解决办法
2452
查看次数

msal.js - 注销而不重定向

是否可以在不重定向的情况下注销?

每次我注册用户时,我都需要验证用户是否在外部数据库中(带有邀请令牌的数据库)。我是在注册完成后才做的。当我发现用户不应该被允许登录时,我需要调用logout以清除登录弹出窗口中的 cookie/存储(如果我在再次打开 singin 弹出窗口后不这样做,azure 会尝试自动登录用户并且不允许,例如,重新注册)。在我的情况下,页面的刷新是不必要的,因为它是一个注册过程,我已经在登录页面进行刷新。

azure-ad-b2c azure-ad-msal msal.js

5
推荐指数
1
解决办法
7099
查看次数

API 管理身份提供者的权限字段中的内容

问题

我正在使用 Azure API 管理服务构建 API。我已经创建了一个 Azure AD B2C 租户,我可以通过它来授权对上述 API 的调用。

我能够成功设置租户;但是,我在尝试添加 Azure Active Directory B2C 类型的身份提供程序时遇到了问题。

我正在关注 2017 年的演练:https : //docs.microsoft.com/en-us/azure/api-management/api-management-howto-aad-b2c

问题是在 Azure 文档中未涵盖的实际创建向导中发生了一些更改。还有一个额外的字段是必需的:权威;那里有什么?

我试过的

到目前为止,我已经在网上搜索过,我唯一能找到的是 ASP.NET 应用程序引用以下架构的权限:

https://login.microsoftonline.com/tfp/ {tenant}/B2C_1_{signup_policy}

我尝试了此操作(填写我的租户和注册策略独有的缺失值),但收到错误消息:“一个或多个字段包含不正确的值:Azure Active Directory B2C 权限无效。”

有人可以告诉我应该去那里做什么,或者至少指出我更新的 Azure 文档的方向吗?同样,上面的链接文档是 2017 年的,没有提到授权字段。

azure azure-active-directory azure-api-management azure-ad-b2c

5
推荐指数
1
解决办法
556
查看次数

如何使用 Owin 在 MVC 应用程序上获取 Azure B2C 访问令牌

我的最新项目让我制作了一个 MVC 应用程序。该应用程序的基本要求是允许用户使用 Azure ADD B2C 登录并允许用户操作 Azure 应用服务数据库上的数据。按照此处的这篇文章,我已成功将用户登录到 B2C。但是,从登录应用服务开始,我无法进入应用程序的第二部分。我知道我需要从 B2C 获取访问令牌才能传递给应用程序服务进行验证。我的问题是我只能获得一个 ID 令牌,该应用服务应该向我发送一个 401。我的 OWIN 启动类包含以下内容,就像文章一样:

public class Startup
{
    // App config settings
    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 redirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"];

    // B2C policy identifiers
    public static string SignUpPolicyId = ConfigurationManager.AppSettings["ida:SignUpPolicyId"];
    public static string SignInPolicyId = ConfigurationManager.AppSettings["ida:SignInPolicyId"];
    public static string ProfilePolicyId = ConfigurationManager.AppSettings["ida:UserProfilePolicyId"];

    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    } …
Run Code Online (Sandbox Code Playgroud)

authentication cookies asp.net-mvc azure azure-ad-b2c

5
推荐指数
0
解决办法
928
查看次数

AADB2C90083:请求缺少必需参数:grant_type

我正在尝试使用以下 URL 中提到的自定义策略在 Azure Active Directory B2C 中配置 ROPC 流。

https://docs.microsoft.com/en-us/azure/active-directory-b2c/ropc-custom

但是在测试 ROPC 策略时出现以下错误。{ "error": "invalid_request", "error_description": "AADB2C90083: 请求缺少必需参数:grant_type。\r\n相关 ID:b4153dfe-4296-4b68-850f-ee30ac4d86b0\r\n时间戳:2019- 11:53:23Z\r\n" }

azure azure-active-directory azure-ad-b2c

5
推荐指数
1
解决办法
3128
查看次数

如何使用 B2C 和 Blazor 获取 JWT 不记名令牌

我已经使用 Visual Studio 模板创建了一个新的 Blazor 应用程序,并在项目创建期间使用向导添加了 B2C。

所有这些都适用于身份验证。我可以使用我最喜欢的身份提供者登录并接收 id_token。我不知道在哪里可以获得 id_token,但我可以在我的用户身份中看到声明。

我需要帮助的是如何获取声明中的信息以获取访问令牌。我需要这个令牌来调用我的端点。

这似乎应该是简单而常见的事情,但我似乎找不到任何好的例子。

在普通的 MVC 应用程序中,我可以通过 ConfidentialClientApplicationBuilder.AcquireTokenByAuthorizationCode 获得它,但这在 Blazor 中不起作用(除非我做错了什么)。

我试过这个:https : //docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-access-tokens

我认为它会起作用。如何在我的 blazor 应用程序中获取“代码”(id_token)?这是在幕后解码的内容,我所能找到的只是解码“代码”所产生的声明。

我已经使用 azure 的“运行用户流程”来访问示例 id_token("code") 并将其粘贴到我的项目中并在上面的链接中进行调用,它似乎有效。我遇到了权限问题,但这至少是一个成功的调用。

也许如果我可以访问 id_token,我就可以从那里开始工作?

c# access-token azure-ad-b2c

5
推荐指数
1
解决办法
976
查看次数