Программный доступ к ресурсу, защищенному IBM APP ID - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь получить доступ к API отдыха, защищенному экземпляром службы APP ID.Я пробовал два подхода для доступа к остальному ресурсу, но всегда я получаю <title>Redirect To OP</title> перенаправить HTML в качестве ответа вместо фактического ресурса.

1.подход 1
Использование облачного каталога user & и grant_type = пароль для конечной точки токена

1.1 Я добавил пользователя и пароль в облачный каталог.

1.2 HTTP POST для <oauthServer>/token конечной точки с clientID и Secret в качестве базовой аутентификации и grant_type=password, username=<cloud_direcotry_user>, password=<password>

1.3 Я получаю access_token и Identity Token

1.4 Вызванный защищенный ресурс с заголовком авторизации, который имеет токен доступа и токен идентификации в качестве значения заголовка 'authorization' Bearer <accesstoken> <identity token>

1.5 Ответ содержит перенаправленный HTML вместо фактического ресурса JSON / XML.

Подход 2

2.1 Извлечение токена доступа с использованием <oauthserverUrl>/token конечной точки и grant_type=client_credentials добавление Базовая аутентификация с Идентификатором клиента и Секретом в качестве имени пользователя ипароль

2.2 Я получил токен доступа с типом Bearer

2.3 для вызова защищенного ресурса с авторизацией заголовок

authorization: Bearer <access_toke>

2.4 Я получил такой же ответ на перенаправление<title>Redirect To OP</title> вместо фактического ресурса JSON / XML

___ Новое обновление ____

Вот конфигурация клиента openid подключения iberty поставщика ресурса.

<openidConnectClient id="<identifier>"
                     clientId= "${APPID_CLIENT_ID}"
                     clientSecret= "${APPID_CLIENT_SECRET}"                         authorizationEndpointUrl="${APPID_AUTH_SERVER}/authorization"
                     tokenEndpointUrl="${APPID_AUTH_SERVER}/token"
                     jwkEndpointUrl="${APPID_AUTH_SERVER}/publickeys"
                     issuerIdentifier="${APPID_AUTH_SERVER_ISSUER}"
                     tokenEndpointAuthMethod="basic"
                     signatureAlgorithm="RS256"
                     authFilterid="myAuthFilter"
                     trustAliasName="ng.bluemix.net"
                     trustStoreRef="appidtruststore"
                     redirectToRPHostAndPort="https://${env.APPID_SAMPLE_HOST}:${env.APPID_SAMPLE_SSL_PORT}"
         userIdentityToCreateSubject="email"
         inboundPropagation="supported"
         validationEndpointUrl="${APPID_AUTH_SERVER}/introspect"
         validationMethod="introspect"

/>

Ответы [ 2 ]

0 голосов
/ 09 октября 2018
  1. В вашем подходе 1 заголовок «токена идентификации для маркера доступа авторизации» не поддерживается, предполагается, что это «токен доступа для авторизации».
  2. Является ли accessToken непрозрачным токеном или JWT?Вы можете опубликовать образец JWT или результат непрозрачного самоанализа?
0 голосов
/ 08 октября 2018

Я предполагаю, что вы используете WebSphere Liberty и настроили клиент OIDC.Похоже, вам следует настроить клиент OIDC в ​​файле server.xml для поддержки защищенных конечных точек REST, как указано в документации:

Необязательно: Клиент OpenID Connect можно настроить так, чтобы он дополнительно принимал действительный токен доступа к каналу OAuth 2.0 в качестве токена аутентификации, не перенаправляя запрос поставщику OpenID Connect.Если запрос содержит действительный токен доступа к каналу OAuth 2.0, то клиент Liberty OpenID Connect автоматически проверит токен доступа и создаст аутентифицированный субъект на основе результата проверки токена.Если запрос не содержит токен доступа или токен доступа недействителен, то клиент Liberty OpenID Connect продолжает перенаправлять пользователя к поставщику OpenID Connect.Эта функция позволяет серверу Liberty обслуживать как браузерный клиент, так и не браузерный клиент как клиент RESTful.Вы можете добавить inboundPropagation = ”Поддерживается” в конфигурацию, чтобы включить эту функцию.

См .: Настройка клиента OpenID Connect в Liberty

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