Пользовательская политика Azure AD B2C - отправка параметра строки запроса третьей стороне

Я работаю над случаем B2C, который включает интеграцию со сторонним поставщиком удостоверений с использованием OpenIdConnect.

Эта третья сторона ожидает, что определенный параметр строки запроса будет отправлен один или несколько раз:

example.com/oidc/authorize=?...&<▪login_hint

У меня есть технический профиль 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 выдает исключение.

Можно ли как-то этого добиться?


person VRPF    schedule 02.12.2020    source источник
comment
Это немного необычно для повторения строки запроса. Может третья сторона может изменить его реализацию?   -  person Abhishek Agrawal    schedule 02.12.2020
comment
@AbhishekAgrawal, это было бы идеально, но им это не очень нравится.   -  person VRPF    schedule 02.12.2020
comment
Очевидно, что B2C не поддерживает повторяющиеся параметры. Не могли бы вы определить это сами?   -  person Pamela Peng    schedule 03.12.2020


Ответы (1)


Сегодня это невозможно сделать с помощью настраиваемых политик Azure B2C, а также третья сторона не соблюдает спецификацию.

Повторяющиеся параметры запроса нарушают спецификацию OAUTH

  1. Параметры

Имена и значения параметров протокола OAuth чувствительны к регистру. Каждый параметр протокола OAuth НЕ ДОЛЖЕН появляться более одного раза в запросе, и они ТРЕБУЮТСЯ, если не указано иное.

https://oauth.net/core/1.0a/

person VRPF    schedule 11.12.2020