You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AD B2C自定义策略嵌入iframe报错:X-Frame-Options设为deny

问题:嵌入Angular的ASP.NET MVC应用使用Azure AD B2C认证时iframe加载错误

错误信息

Refused to display 'https://login.microsoftonline.com/' in a frame because it set 'X-Frame-Options' to 'deny'

现有配置

注册登录策略

<UserJourneys>
    <UserJourney Id="SignUpOrSignIn">
      <OrchestrationSteps>
        <!-- get AppRoleAssignment -->
        <OrchestrationStep Order="4" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="GetUserAppRoleAssignment" TechnicalProfileReferenceId="GetUserAppRoleAssignment" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
      </OrchestrationSteps>
      <ClientDefinition ReferenceId="DefaultWeb" />
    </UserJourney>
  </UserJourneys>
  <RelyingParty>
    <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
    <UserJourneyBehaviors>
      <JourneyFraming Enabled="true" Sources="https://.io https://testsquid.dynatex.io" />
    </UserJourneyBehaviors>
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
....
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>

B2C_1A_TRUSTFRAMEWORKEXTENSIONS.xml中的多租户AD配置

<ClaimsProvider>
      <Domain>microsoftonline.com</Domain>
      <DisplayName>Common AAD</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="AADCommon-OpenIdConnect">
          <DisplayName>Multi-Tenant Azure Ad</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="ProviderName">https://login.microsoftonline.com</Item>
            <Item Key="METADATA">https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration</Item>
            <!-- Update the Client ID below to the Application ID -->
            <Item Key="response_types">code</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="scope">openid profile email</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
            <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
            <Item Key="client_id">....23-34e2ae21b7eb</Item>
            <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com</Item>
            <!-- <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000,https://login.microsoftonline.com/11111111-1111-1111-1111-111111111111</Item> -->
          </Metadata>

解决方法

1. 修正JourneyFraming的Sources配置

当前Sources包含无效地址https://.io,会导致白名单配置失效,只保留合法父页面域名:

<UserJourneyBehaviors>
  <JourneyFraming Enabled="true" Sources="https://testsquid.dynatex.io" />
</UserJourneyBehaviors>

确保所有列入Sources的域名完整且格式正确。

2. 为多租户AAD技术配置添加iframe支持

在AADCommon-OpenIdConnect的Metadata中添加允许iframe的参数,同时调整响应模式适配嵌入场景:

<Metadata>
  <!-- 保留原有参数 -->
  <Item Key="ProviderName">https://login.microsoftonline.com</Item>
  <Item Key="METADATA">https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration</Item>
  <Item Key="response_types">code</Item>
  <Item Key="scope">openid profile email</Item>
  <Item Key="HttpBinding">POST</Item>
  <Item Key="UsePolicyInRedirectUri">false</Item>
  <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
  <Item Key="client_id">....23-34e2ae21b7eb</Item>
  <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com</Item>
  
  <!-- 添加以下参数 -->
  <Item Key="response_mode">query</Item>
  <Item Key="FrameAllowed">true</Item>
</Metadata>

将response_mode从form_post改为query,避免iframe中的跨域提交问题。

3. 验证应用注册的重定向URI

确保Azure AD B2C应用注册中的重定向URI属于Sources配置的域名范围,且类型选择"Web"。

4. 检查目标租户的iframe限制

若用户登录的企业租户有安全策略禁用iframe嵌入,需联系租户管理员调整相关设置。

内容的提问来源于stack exchange,提问作者quanchinhong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:03:31