首页 文章

AAD B2C UI自定义 - MS内容未显示

提问于
浏览
1

我正在尝试使用AAD B2C页面UI自定义以及自定义策略,如下所述:https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-ui-customization-custom . 我可以让我的内容出现,但标准的B2C内容似乎没有按预期合并 .

我在Extensions.xml文件中有这个用户之旅:

<UserJourney Id="SignInB2CLocal">
      <OrchestrationSteps>
        <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
          <ClaimsProviderSelections>
            <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
          </ClaimsProviderSelections>
          <ClaimsExchanges>
            <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="2" Type="ClaimsExchange">
          <Preconditions>
            <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
              <Value>objectId</Value>
              <Action>SkipThisOrchestrationStep</Action>
            </Precondition>
          </Preconditions>
          <ClaimsExchanges>
            <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="3" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
      </OrchestrationSteps>
    </UserJourney>

我有这个ContentDefinition,也在我的Extensions.xml文件中:

<BuildingBlocks>
    <ContentDefinitions>
      <ContentDefinition Id="api.signuporsignin">
        <LoadUri>https://kdesteasidmcustom.blob.core.windows.net/LocalSignUI.html</LoadUri>
        <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
        <DataUri>urn:com:microsoft:aad:b2c:elements:idpselection:1.0.0</DataUri>
        <Metadata>
          <Item Key="DisplayName">Idp selection page</Item>
          <Item Key="language.intro">Sign in</Item>
        </Metadata>
      </ContentDefinition>
    </ContentDefinitions>
  </BuildingBlocks>

我上面提到的UI自定义文件(LocalSignUI.html)非常简单:

<!DOCTYPE html>
<html>
<body>
    <h1>It worked!</h1>
    <div id="api"></div>
</body>
</html>

www.test-cors.org似乎认为我的内容文件正确设置了CORS . 当我尝试运行userjourney(使用Azure AADB2C门户网站的路径)时,我会看到一个显示“It working!”的页面 . (来自我的html内容文件),“登录”(不知道这来自哪里,但可能来自ContentDefinition“language.intro”键),没有别的 - 页面的其余部分为空白 . 如果我检查页面源代码,有很多javascript和一些标签来涵盖no-cookie和no-javascript场景,但是没有表单或输入标签 . 我查看了应用程序洞察中的日志信息,并查看了对我的内容文件的引用,但没有明显的错误 .

有任何想法吗?

谢谢!

马丁

2 回答

  • 0

    感谢来自@spottedmahn的暗示!在我的TrustFrameworkExtensions.xml文件中,我创建了一个ContentDefinition(在BuildingBlocks - > ContentDefinitions中),如下所示:

    <ContentDefinition Id="api.signuporsignin">
       <LoadUri>URL-OF-MY-CUSTOMIZATON-FILE</LoadUri>
       <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
       <DataUri>urn:com:microsoft:aad:b2c:elements:unifiedssp:1.0.0</DataUri>
       <Metadata>
          <Item Key="DisplayName">Signin and Signup</Item>
       </Metadata>
     </ContentDefinition>
    

    UserJourney的第一个编排步骤类型为 CombinedSignInAndSignUp ,ContentDefinitionReferenceID为 api.signuporsignin . 似乎ContentDefinition中DataUri的 urn:com:microsoft:aad:b2c:elements:unifiedssp:1.0.0 值是关键 . 我的自定义文件中的Div标签仅包含 id="api" .

    谢谢!

    马丁

  • 2

    我认为你至少需要一个 <head><title></title></head> 否则它不是很好的HTML,可能无法正常工作 .

相关问题