在托管Blazor WebAssembly中使用不同的Azure AD B2C用户流进行登录/注册

flvlnr44  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(127)

我已经根据https://learn.microsoft.com/en-us/aspnet/core/blazor/security/webassembly/hosted-with-azure-active-directory-b2c?view=aspnetcore-7.0为我的托管blazor wasm应用程序设置了登录和注册用户流。现在,我想有不同的用户流登录(B2C_1_SIGN_IN)和注册(B2C_1_SIGN_UP)登录和注册网页上的链接。这是因为我想在注册后才在本地数据库中创建用户。
客户端的原始appsettings.json

"AzureAdB2C": {
    "Authority": "https://***.b2clogin.com/***.onmicrosoft.com/B2C_1_SIGN_UP_SIGN_IN",
    "ClientId": "****,
    "ValidateAuthority": false
  }

字符串
服务器的原始appsettings.json

{

  "AzureAdB2C": {
    "Instance": "https://***.b2clogin.com/",
    "ClientId": "***",
    "Domain": "**.onmicrosoft.com",
    "Scopes": "API.ReadWrite",
    "SignUpSignInPolicyId": "B2C_1_SIGN_UP_SIGN_IN",
},...
}


感谢你的帮助。

mu0hgdu0

mu0hgdu01#

在托管Blazor WebAssembly中使用不同的Azure AD B2C用户流进行登录/注册
Azure AD B2C => User flows => New User flow中,我们有不同的选项来分别创建Sign InSign Up用户流。
x1c 0d1x的数据

  • 登录用户流程:*


  • 注册用户流量:*

根据本MSDoc
用户无法注册Azure AD B2C本地帐户。
我们可以为Sign in和Sign Up创建一个Custom policy
必须使用自定义策略URL更新客户端配置中的授权。
而不是SignUpSignInPolicyId,我们需要有不同的PolicyId-SignInPolicyIdSignUpPolicyId
下面是我的appsettings.json中的配置。

  • 服务器应用appsettings.json:*
{
  "AzureAd": {
    "Instance": "https://****.b2clogin.com/",
    "Domain": "****.onmicrosoft.com",
    "TenantId": "**********",
    "ClientId": "**********",
    "CallbackPath": "/signin-oidc",
    "Scopes": "access_as_user",
    "SignInPolicyId": "B2C_1_SignIn",
    "SignUpPolicyId": "B2C_1_SignUp",
    "SignedOutCallbackPath": "/signout/SignIn",
    "ResetPasswordPolicyId": "b2c_1_reset",
    "EditProfilePolicyId": "b2c_1_edit_profile",
    "EnablePiiLogging": true,
    "ClientSecret": "Client secret from app-registration. Check user secrets/azure portal.",
    "ClientCertificates": []
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
 }

字符串
如果仅为Sign In配置,请从appsettings.json文件中删除SignUpPolicyId

客户端应用appsettings.json

{
  "AzureAd": {
    "ClientId": "**********",
    "Authority": "https://****.b2clogin.com/blazorserver.onmicrosoft.com/CustomPolicy****",
    "ValidateAuthority": false
  },
  "ServerApi": {
    "BaseUrl": "https://****.onmicrosoft.com/******",
    "Scopes": "https://blazorserver.onmicrosoft.com/****/access_as_user"
  }
}


谢谢@Taiseer Joudeh的解释。
请参阅Blogcustom policies以了解更多详细信息。

相关问题