在B2C自定义策略上启用Javascript

时间:2019-07-29 19:18:46

标签: azure-ad-b2c

即使我根据文档在下面添加了Javascript,也无法在客户端禁用Javascript。

<RelyingParty>
  <DefaultUserJourney ReferenceId="B2CSignUpOrSignInWithPassword" />
  <UserJourneyBehaviors>
   <ScriptExecution>Allow</ScriptExecution>
  </UserJourneyBehaviors>
  ...
</RelyingParty>

当我尝试上传自定义策略时,出现错误-“启用JavaScript时,请在内容定义中使用页面协定。”在文档中找不到与此错误相关的任何内容。

试图使用datauri将元数据添加到内容定义中-

<ContentDefinition Id="api.localaccountpasswordreset">  
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
 <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:1.1.0</DataUri>
  ...
 </ContentDefinition>

期望javascript可在客户端登录页面上使用

5 个答案:

答案 0 :(得分:3)

如果仍然遇到错误,请替换DataUri标签中的

<DataUri>urn:com:microsoft:aad:b2c:elements:idpselection:1.2.0</DataUri><DataUri>urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.0</DataUri>

ContentDefinition api.idpselectionsapi.idpselections.signup

答案 1 :(得分:2)

您需要按照以下步骤将脚本执行元素添加到依赖方部分:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/javascript-samples#add-the-scriptexecution-element

然后将页面协定添加到文件中提到contentDefinitions的{​​{1}}的 ALL 中。

https://docs.microsoft.com/en-us/azure/active-directory-b2c/page-layout#replace-datauri-values

答案 2 :(得分:0)

如果仍然遇到错误,则应将内容定义中的 all 数据URI替换为以下URL中定义的数据URI:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/contentdefinitions#migrating-to-page-layout

在策略中的任何地方使用新数据URI 而不是,这将解决此问题。地雷使用相同的方法固定。不仅如此,Microsoft文档还明确指出“ 如果您打算使用JavaScript,则需要为自定义策略中的所有内容定义定义带有页面协定版本的页面布局版本”。

引用网址:https://docs.microsoft.com/en-us/azure/active-directory-b2c/javascript-samples

答案 3 :(得分:0)

我遇到了同样的问题,要纠正,请按照以下步骤操作(针对自定义策略):

首先:在_Base.Xml中,转到ContentDefinitions并查找DataUri,将所有旧的uri更改为新的,例如此链接https://docs.microsoft.com/en-us/azure/active-directory-b2c/contentdefinitions#migrating-to-page-layout

第二:确保元素和页面标识符之间有“合同”一词,例如:更改此 urn:com:microsoft:aad:b2c:elements:globalexception:1.2.0 为了这 urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.0

第三:在您的特定自定义策略中,找到RelyingParty,然后将ScriptExecution元素添加到RelyingParty的UserJourneyBehaviors元素中

像这样

<RelyingParty>
  <DefaultUserJourney ReferenceId="B2CSignUpOrSignInWithPassword" />
  <UserJourneyBehaviors>
    <ScriptExecution>Allow</ScriptExecution>
  </UserJourneyBehaviors>
  ...
</RelyingParty>

第四:上传base.xml,上传您的自定义policy.xml并享受乐趣!

来自巴西的问候。

答案 4 :(得分:0)

这对我有用只有当我用合同更新所有ContentDefinition时,就像,这需要我的时间< /p>

SignUpOrSignin.xml

<UserJourneyBehaviors>
  ...
  <ScriptExecution>Allow</ScriptExecution>
</UserJourneyBehaviors>

TrustFrameworkExtensions.xml / TrustFrameworkBase.xml

<ContentDefinition Id="api.selfasserted.appfactor.registration">
    <LoadUri>https://raw.githubusercontent.com/mdzzaman/dev-info/master/az/selfasserted-appfactor-registration.html</LoadUri>
    <RecoveryUri>https://raw.githubusercontent.com/mdzzaman/dev-info/master/az/selfasserted-appfactor-registration.html</RecoveryUri>
    <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.6</DataUri>
    <Metadata>
      <Item Key="DisplayName">App Factor</Item>
    </Metadata>
  </ContentDefinition>


 <ContentDefinition Id="api.error">
    <LoadUri>~/tenant/templates/AzureBlue/exception.cshtml</LoadUri>
    <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
    <DataUri>urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1</DataUri>
    <Metadata>
      <Item Key="DisplayName">Error page</Item>
    </Metadata>
  </ContentDefinition>

  <ContentDefinition Id="api.signuporsignin">
    <LoadUri>~/tenant/templates/AzureBlue/unified.cshtml</LoadUri>
    <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
    <DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.4</DataUri>
    <Metadata>
      <Item Key="DisplayName">Signin and Signup</Item>
    </Metadata>
  </ContentDefinition>

... 全部