Возврат ответа REST API в качестве выходной заявки на Azure B2C - PullRequest
0 голосов
/ 16 марта 2020

Привет всем и спасибо за поддержку ...

В настоящее время я разрабатываю решение для добавления пользовательских утверждений в токен JWT.

Настройка выглядит следующим образом:

  1. Azure B2 C имеет настраиваемую политику с несколькими поставщиками утверждений.
  2. Поставщик утверждений для Azure AD настроен для стандартных утверждений и моего настраиваемого.
  3. Поставщик утверждений для вызова API REST.
  4. Сборки API REST сконфигурированы для сбора пользовательских атрибутов из API-интерфейса Graph, настроены на использование входной заявки 'email' для поиска данных, связанных с вход пользователя в систему и заявка 'output' с именем моей настраиваемой заявки.
  5. В маршрут SignUpSignIn пользователя был добавлен шаг для вызова REST API перед выдачей токена JWT.

Путешествие пользователя успешно работает, и я могу перенаправить на Azure AD для аутентификации, я вижу, что REST API запускается из журналов в Azure, и мне выдается мой токен JWT. Но я не вижу в этом никаких претензий.

Когда я проверяю журналы API REST, я вижу, что функция успешно запущена, и если я вручную запускаю опцию тестирования в своей функции Azure, я также могу см. успешный ответ, который представляет собой массив данных JSON. Так что это говорит о том, что мой REST API работает так, как должно быть. Я также успешно протестировал его в PowerShell и веб-браузере и правильно получил ответ в теле.

У меня есть подозрения, что проблема заключается в процессе возврата значения и вставки его в пользовательское утверждение, чтобы он указан в моем токене JWT.

К вашему сведению: пользовательское заявление, с которым я работаю, - это возвращение групп безопасности, в которых пользователь является членом AzureAD.

        <ClaimsProvider>
        <DisplayName>REST API</DisplayName>
        <TechnicalProfiles>
            <TechnicalProfile Id="GetUserGroups">
          <DisplayName>Retrieves security groups assigned to the user</DisplayName>
          <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <Metadata>
            <Item Key="ServiceUrl">https://contoso.azurewebsites.net/api/aadgroups?code=123456789QWERTYUIOP123456789QWERTYUIOP==</Item>
            <Item Key="AuthenticationType">None</Item>
            <Item Key="SendClaimsIn">Body</Item>
            <Item Key="AllowInsecureAuthInProduction">true</Item>
          </Metadata>
          <InputClaims>
            <InputClaim ClaimTypeReferenceId="email" />
          </InputClaims>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="restapigroups" />
          </OutputClaims>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
        </TechnicalProfile>
        </TechnicalProfiles>
        </ClaimsProvider>


        <ClaimType Id="restapigroups">
          <DisplayName>Group memberships</DisplayName>
          <DataType>stringCollection</DataType>
          <UserHelpText>This is read only for the user</UserHelpText>
          <UserInputType>Readonly</UserInputType>
        </ClaimType>


        <OrchestrationStep Order="11" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="AADUserGroups" TechnicalProfileReferenceId="GetUserGroups" />
          </ClaimsExchanges>
        </OrchestrationStep>

Как всегда, любая справка Спасибо, дайте мне знать, если у вас есть какие-либо вопросы или предложения. Спасибо.

1 Ответ

0 голосов
/ 17 марта 2020

Необходимо настроить раздел RelyingParty для вывода заявки в токен. См. Этот пример: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-rest-api-claims-exchange#add -претензия

...