asp.net-mvc - 无法创建正确的 OpenID Connect 配置端点 (v2)

标签 asp.net-mvc azure authentication azure-active-directory azure-ad-b2c

我希望在 azure 中拥有一个应用程序(简单的 asp.net mvc 应用程序),让用户保持在 azure 中,我希望通过 azure b2c 来完成此操作。

我在azure中注册了应用程序并将所有配置放入appsettings.json中,我注意到应用程序生成的url与azure中的url不匹配:

以下是应用程序:

“https://isthereanynewscodeblast.b2clogin.com/isthereanynewscodeblast.onmicrosoft.com/B2C_1_eclaims_login/v2.0/.well-known/openid-configuration”

以下来自 B2C:

“https://isthereanynewscodeblast.b2clogin.com/isthereanynewscodeblast.onmicrosoft.com//v2.0/.well-known/openid-configuration”

相似但不相同。我发现 URL 是由 AzureADB2COpenIdConnectOptionsConfiguration 在此方法中生成的:

internal static string BuildAuthority(AzureADB2COptions AzureADB2COptions)
{
    var baseUri = new Uri(AzureADB2COptions.Instance);
    var pathBase = baseUri.PathAndQuery.TrimEnd('/');
    var domain = AzureADB2COptions.Domain;
    var policy = AzureADB2COptions.DefaultPolicy;

    return new Uri(baseUri, new PathString($"{pathBase}/{domain}/{policy}/v2.0")).ToString();
}

这是我的 .json

"AzureAdB2C": {
  "Instance": "https://isthereanynewscodeblast.b2clogin.com",
  "Domain": "isthereanynewscodeblast.onmicrosoft.com",
  "ClientId": "guid-of-client",
  "CallbackPath": "/signin-oidc",
  "SignUpSignInPolicyId": "B2C_1_eclaims_login ",
  "ResetPasswordPolicyId": "B2C_1_eclaims_reset",
  "EditProfilePolicyId": "B2C_1_eclaims_edit"
},

这与 AAD 中的不匹配:( 代码来自 nuget:Microsoft.AspNetCore.Authorization

它不 protected ,也不是虚拟的,因此我看不到任何覆盖它的选项。

所以我的问题是:

  • 有没有办法以某种方式处理这个问题,以便应用程序可以与azure通信
  • 还有其他方法可以注册应用吗,就像这样简单:
services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
  .AddAzureADB2C(options =>
    {
      Configuration.Bind("AzureAdB2C", options);
    });

//编辑:

这是应用程序注册的 list :

{
    "id": "438a430b-4e80-4c6c-8f45-dfca460b2e03",
    "acceptMappedClaims": null,
    "accessTokenAcceptedVersion": 2,
    "addIns": [],
    "allowPublicClient": null,
    "appId": "44234136-6eee-431f-98ea-668343d7a3fd",
    "appRoles": [],
    "oauth2AllowUrlPathMatching": false,
    "createdDateTime": "2020-08-18T22:32:28Z",
    "groupMembershipClaims": null,
    "identifierUris": [],
    "informationalUrls": {
        "termsOfService": null,
        "support": null,
        "privacy": null,
        "marketing": null
    },
    "keyCredentials": [],
    "knownClientApplications": [],
    "logoUrl": null,
    "logoutUrl": null,
    "name": "user-log-test",
    "oauth2AllowIdTokenImplicitFlow": false,
    "oauth2AllowImplicitFlow": false,
    "oauth2Permissions": [],
    "oauth2RequirePostResponse": false,
    "optionalClaims": null,
    "orgRestrictions": [],
    "parentalControlSettings": {
        "countriesBlockedForMinors": [],
        "legalAgeGroupRule": "Allow"
    },
    "passwordCredentials": [],
    "preAuthorizedApplications": [],
    "publisherDomain": "isthereanynewscodeblast.onmicrosoft.com",
    "replyUrlsWithType": [
        {
            "url": "https://localhost:44395/signin-oidc",
            "type": "Web"
        }
    ],
    "requiredResourceAccess": [
        {
            "resourceAppId": "00000003-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "37f7f235-527c-4136-accd-4a02d197296e",
                    "type": "Scope"
                },
                {
                    "id": "7427e0e9-2fba-42fe-b0c0-848c9e6a8182",
                    "type": "Scope"
                }
            ]
        }
    ],
    "samlMetadataUrl": null,
    "signInUrl": null,
    "signInAudience": "AzureADandPersonalMicrosoftAccount",
    "tags": [],
    "tokenEncryptionKeyId": null
}

最佳答案

你可以尝试使用这个b2c sample app这将使您了解如何使用 B2C 积分。它附带预配置的端点(如下),您可以稍后将其替换为您的租户和策略以进行测试。

{
    "AzureAdB2C": {
        "Instance": "https://fabrikamb2c.b2clogin.com",
        "ClientId": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6",
        "Domain": "fabrikamb2c.onmicrosoft.com",
        "SignedOutCallbackPath": "/signout/B2C_1_susi",
        "SignUpSignInPolicyId": "b2c_1_susi",
        "ResetPasswordPolicyId": "b2c_1_reset",
        "EditProfilePolicyId": "b2c_1_edit_profile" 
    },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

关于asp.net-mvc - 无法创建正确的 OpenID Connect 配置端点 (v2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63540980/

相关文章:

c# - 在MVC项目中使用微软账号认证时如何获取用户邮箱?

azure - 无法在 azure Active Directory 中创建应用程序 - 权限不足

azure - 如何使用 Bicep 创建 Microsoft.DBforPostgreSQL?

windows - Windows XP 和 Unix 中的 kerberos 票证 TGT 和服务票证的路径?

java - Spring MVC默认身份验证如何添加用户/注册

c# - 如何在Moq框架中模拟HttpContext(ControllerContext),并进行 session

c# - 通用存储库的依赖注入(inject)

asp.net-mvc - 我应该如何在 Web 应用程序中限定 Entity Framework DbContext 的依赖注入(inject)? (InstancePerHttpRequest 与 SingleInstance)

c# - Application Insights 未使用 Azure Functions C# 进行日志记录。命名空间似乎是问题所在

java - Tomcat 7.0.79 服务器认证问题