Azure AD B2C 自定义策略 - 将查询字符串参数发送给第 3 方
Azure AD B2C custom policy - send query string parameter to 3rd party
我正在处理一个涉及使用 OpenIdConnect 与第 3 方身份提供商集成的 B2C 案例。
此第三方希望将特定查询字符串参数发送一次或多次:
示例。com/oidc/authorize=?...&login_hint=ABCvalue&login_hint =XYZ值
我有一个包含所需输入声明的 OpenIdConnect 技术资料:
<TechnicalProfile Id="Example-Swe">
<DisplayName>Example Sverige</DisplayName>
<Description>Login with Example</Description>
<Protocol Name="OpenIdConnect"/>
<OutputTokenFormat>JWT</OutputTokenFormat>
<Metadata>
<Item Key="client_id">preprod.Example</Item>
<Item Key="METADATA">https://example.com/oidc/.well-known/openid-configuration</Item>
<Item Key="response_types">code</Item>
<Item Key="scope">openid phone profile example.national_id offline_access</Item>
<Item Key="response_mode">query</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="UsePolicyInRedirectUri">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="client_secret" StorageReferenceId="B2C_1A_ExampleSecretNO1"/>
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="acr_values" DefaultValue="urn:example:oidc:method:sbid"/>
<InputClaim ClaimTypeReferenceId="example_profile" DefaultValue="example-id" />
<InputClaim ClaimTypeReferenceId="ui_locales" DefaultValue="sv" />
<InputClaim ClaimTypeReferenceId="claimABC" PartnerClaimType="login_hint" />
<InputClaim ClaimTypeReferenceId="claimXYZ" PartnerClaimType="login_hint" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="access_token" PartnerClaimType="{oauth2:access_token}" />
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="SigBidSwe" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="Example-BID-Swe" />
<OutputClaim ClaimTypeReferenceId="countryCode" DefaultValue="SE" AlwaysUseDefaultValue="true" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD"/>
</TechnicalProfile>
但是有两个声明具有相同的 PartnerClaimType 是行不通的。 B2C 抛出异常。
是否有可能以某种方式实现这一目标?
今天无法使用 Azure B2C 自定义策略完成,而且第三方也不遵守规范。
重复的查询参数违反了 OAUTH 规范
- 参数
OAuth 协议参数名称和值区分大小写。除非另有说明,否则每个 OAuth 协议参数不得在每个请求中出现超过一次,并且是必需的。
我正在处理一个涉及使用 OpenIdConnect 与第 3 方身份提供商集成的 B2C 案例。
此第三方希望将特定查询字符串参数发送一次或多次:
示例。com/oidc/authorize=?...&login_hint=ABCvalue&login_hint =XYZ值
我有一个包含所需输入声明的 OpenIdConnect 技术资料:
<TechnicalProfile Id="Example-Swe">
<DisplayName>Example Sverige</DisplayName>
<Description>Login with Example</Description>
<Protocol Name="OpenIdConnect"/>
<OutputTokenFormat>JWT</OutputTokenFormat>
<Metadata>
<Item Key="client_id">preprod.Example</Item>
<Item Key="METADATA">https://example.com/oidc/.well-known/openid-configuration</Item>
<Item Key="response_types">code</Item>
<Item Key="scope">openid phone profile example.national_id offline_access</Item>
<Item Key="response_mode">query</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="UsePolicyInRedirectUri">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="client_secret" StorageReferenceId="B2C_1A_ExampleSecretNO1"/>
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="acr_values" DefaultValue="urn:example:oidc:method:sbid"/>
<InputClaim ClaimTypeReferenceId="example_profile" DefaultValue="example-id" />
<InputClaim ClaimTypeReferenceId="ui_locales" DefaultValue="sv" />
<InputClaim ClaimTypeReferenceId="claimABC" PartnerClaimType="login_hint" />
<InputClaim ClaimTypeReferenceId="claimXYZ" PartnerClaimType="login_hint" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="access_token" PartnerClaimType="{oauth2:access_token}" />
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="SigBidSwe" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="Example-BID-Swe" />
<OutputClaim ClaimTypeReferenceId="countryCode" DefaultValue="SE" AlwaysUseDefaultValue="true" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD"/>
</TechnicalProfile>
但是有两个声明具有相同的 PartnerClaimType 是行不通的。 B2C 抛出异常。
是否有可能以某种方式实现这一目标?
今天无法使用 Azure B2C 自定义策略完成,而且第三方也不遵守规范。
重复的查询参数违反了 OAUTH 规范
- 参数
OAuth 协议参数名称和值区分大小写。除非另有说明,否则每个 OAuth 协议参数不得在每个请求中出现超过一次,并且是必需的。