Защита всех API в Azure API Management с помощью AD

Можно ли защитить все API с помощью одного общего каталога Azure Active Directory на уровне API управления Azure по следующему сценарию:

  1. Пользователь вызывает службу управления API Azure, указывающую на службу X
  2. Если запрос не аутентифицирован, пользователь должен предоставить кредитные данные Active Directory.
  3. Кредитные данные AD проверяются на отдельном компоненте, и возвращается токен.
  4. Пользователь использует токен для аутентификации в службе управления API Azure
  5. Если пользователь аутентифицирован, служба управления API использует базовую аутентификацию для вызова службы X
  6. Для доступа к каждой Службе можно использовать один токен, поскольку он проверяется в отдельном компоненте.
  7. Сервисы защищены только базовой аутентификацией, которая настраивается на портале управления API. введите описание изображения здесь

Возможна ли реализация этого сценария? Если нет, то как я могу добиться чего-то похожего на доступные компоненты?


person Przemek Marcinkiewicz    schedule 29.03.2016    source источник


Ответы (1)


Большая часть этого должна быть возможна с помощью политик управления API.

2,3) используйте для этого расширенные функции политики: https://msdn.microsoft.com/en-us/library/azure/dn894085.aspx

4) добавьте политику Validate JWT: https://msdn.microsoft.com/library/azure/034febe3-465f-4840-9fc6-c448ef520b0f#ValidateJWT

<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
    <openid-config url="https://login.windows.net/contoso.onmicrosoft.com/.well-known/openid-configuration" />
    <required-claims>
        <claim name="id" match="all">
            <value>insert claim here</value>
        </claim>
    </required-claims>
</validate-jwt>

5) поведение по умолчанию, базовая аутентификация или сертификат - единственные параметры в управлении Azure API (или передача JWT), это также можно настроить на портале Azure. https://msdn.microsoft.com/en-us/library/azure/dn894079.aspx#Basic

7) да, и учетные данные можно безопасно хранить в новом разделе «Свойства» управления API: https://azure.microsoft.com/en-us/documentation/articles/api-management-howto-properties/

person Erik Oppedijk    schedule 29.03.2016
comment
Привет, @Erik, можешь объяснить, что означают эти <claim name="id" match="all"> <value>insert claim here</value> </claim>? как называется претензия? и какова будет стоимость? - person Sohel Reza; 25.03.2020
comment
Привет, @SohelReza, если у вас есть настраиваемое утверждение, называемое (например) employeeType, и текущий пользователь имеет это утверждение и значение Permanent Employee, следующее будет работать: ‹имя требования = EmployeeType match = all› ‹value› Permanent Employee ‹/Value› ‹/claim› Теперь только пользователи с этой заявкой имеют доступ - person Erik Oppedijk; 25.03.2020
comment
Спасибо @Erik за ответ. Я не возражаю, не могли бы вы помочь ему сейчас? Я пытаюсь проверить свой токен на предъявителя, созданный в Azure AD. Какими будут мои претензии и стоимость на этом этапе? Я следую этому документу docs.microsoft.com/en-us/azure/api-management/, но в конце части validate-jwt я запутался, я также ввожу свой идентификатор приложения, как указано в разделе значений, но всегда возникает ошибка, которая написано Неавторизовано. Токен доступа отсутствует или недействителен. - person Sohel Reza; 25.03.2020