Как вывести групповые заявки в B2C из ADFS в качестве поставщика удостоверений - PullRequest
0 голосов
/ 13 сентября 2018

Я использую ADFS в качестве IdP для Azure B2C через OpenID Connect. Вход в систему работает, и B2C отправляет UPN из ADFS в качестве утверждения socialIdpUserId в токене JWT.

Но групповые заявки от ADFS не работают. Как получить групповые заявки в JWT?

Вот настройка: Правило утверждения ADFS: безопасность домена , группы и upn enter image description here c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", "http://schemas.xmlsoap.org/claims/Group"), query = ";userPrincipalName,tokenGroups(longDomainQualifiedName);{0}", param = c.Value);

Клиентские разрешения установлены на openid и allatclaims enter image description here

Новое определение группы утверждений в политике TrustFrameworkBase в ClaimsSchema:

<ClaimsSchema><ClaimType Id="group">
    <DisplayName>group</DisplayName>
    <DataType>string</DataType>
    <DefaultPartnerClaimTypes>
      <Protocol Name="OAuth2" PartnerClaimType="group" />
      <Protocol Name="OpenIdConnect" PartnerClaimType="group" />
      <Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/claims/Group" />
    </DefaultPartnerClaimTypes>
  </ClaimType></ClaimsSchema>

Вывод group определение заявки в TechnicalProfile в политике TrustFrameworkExtensions:

<OutputTokenFormat>JWT</OutputTokenFormat><OutputClaims>
          <OutputClaim ClaimTypeReferenceId="socialIdpUserId" PartnerClaimType="UPN" />
          <OutputClaim ClaimTypeReferenceId="group" PartnerClaimType="group" />              
        </OutputClaims>

Вывод группа определение заявки в TechnicalProfile в файле политики SignUpOrSignIn

<TechnicalProfile Id="PolicyProfile">
  <DisplayName>PolicyProfile</DisplayName>
  <Protocol Name="OpenIdConnect" />
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="socialIdpUserId" />
    <OutputClaim ClaimTypeReferenceId="group" />
    <OutputClaim ClaimTypeReferenceId="authmethod" />
    <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
    <OutputClaim ClaimTypeReferenceId="identityProvider" />
  </OutputClaims>
  <SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>

Но нет группы заявка поставляется с токеном JWT! Почему?

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Похоже, у OP просто есть ошибка типа requestclaim.Не определенно , потому что вы, возможно, сопоставили что-то нестандартное, но я думаю, вам просто нужно изменить свой PartnerClaimType с group на groups .

    <ClaimType Id="groups">
      <DisplayName>Groups</DisplayName>
      <DataType>stringCollection</DataType>
      <DefaultPartnerClaimTypes>
        <Protocol Name="OpenIdConnect" PartnerClaimType="groups" />
      </DefaultPartnerClaimTypes>
      <UserHelpText>List of group memberships</UserHelpText>
    </ClaimType>
  • После того, как вы определите ClaimType , вам не нужно указывать PartnerClaimType где-либо еще - , если только выпереопределяем значение.
  • Я бы также подумал об использовании атрибута DefaultValue = "", чтобы вы могли проверить, правильно ли ваша политика выполняет выходную заявку.

OutputClaim ClaimTypeReferenceId="groups" DefaultValue="no groups assigned

0 голосов
/ 27 сентября 2018

Ниже описано, как выдавать групповые заявки из B2C: 1. Определите новый тип заявок для групп в файле базовой политики.Это определение должно быть в конце элемента (да, человек, который писал о stringCollection, был write!)

      <ClaimType Id="IdpUserGroups">
    <DisplayName>Security groups</DisplayName>
    <DataType>stringCollection</DataType>
    <DefaultPartnerClaimTypes>
      <Protocol Name="OAuth2" PartnerClaimType="groups" />
      <Protocol Name="OpenIdConnect" PartnerClaimType="groups" />
      <Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/claims/Group" />
    </DefaultPartnerClaimTypes>
  </ClaimType>

Используйте это новое определенное утверждение в в политике расширения в определении для ADFS

          <OutputClaims>                
        <OutputClaim ClaimTypeReferenceId="socialIdpUserId" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" />                
        <OutputClaim ClaimTypeReferenceId="IdpUserGroups" PartnerClaimType="http://schemas.xmlsoap.org/claims/Group" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="SAML fmdadfs4.local"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="SAML ADFS4 fmdadfs4.local" />
      </OutputClaims>

Используйте то же утверждение в определение в определении участвующей стороны в элементе в файле политики входа в систему

  <OutputClaims>
<OutputClaim ClaimTypeReferenceId="socialIdpUserId" />
<OutputClaim ClaimTypeReferenceId="IdpUserGroups" />     
<OutputClaim ClaimTypeReferenceId="identityProvider" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" PartnerClaimType="userPrincipalName" />

Выпуск заявлений группы из ADFS, как показано здесь enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...