Как получить токен доступа для RAML API с помощью OAuth 2.0
Я работал с проектом Mule, используя RAML и API Manager. следуя приведенной здесь процедуре
AM использует API Manager для управления сервисом, связанным с такими характеристиками, как
- Простой менеджер безопасности,
- Поставщик OAuth2.0 и
- Использование токенов доступа OAuth2.0.
У меня есть отдельный поток для перенаправления, который делает следующее
- установите "статус" на 302
установите "Расположение" на URL ниже
http://localhost:8081/org/oauth/token?grant_type=authorization_code&&client_id=53a406c3e4b0624da8246eed&client_secret=myclientsecret&code=#[message.inboundProperties.code]&redirect_uri=http://localhost:8081/raml-api-with-oauth/redirect
Все идет хорошо до здесь.
Но когда я пытаюсь нажать на URL для токена доступа, я вижу сообщение
{ "Ошибка":"unauthorized_client", "error_description":""}
Подводя итог моего вопроса:
- Пожалуйста, помогите мне с процедурой "OAuth Dance"
- Как установить действующий контракт с API для облегчения связи clientId и clientSecret, необходимых для танца OAuth.
Пожалуйста, помогите мне, где я иду не так.
RAML код:
#%RAML 0.8
title: raml-api-with-oauth
version: v1
baseUri: http://localhost:8081/raml-api-with-oauth
securedBy: [oauth_2_0]
securitySchemes:
- oauth_2_0:
description: |
This supports OAuth 2.0 for authenticating all API requests.
type: OAuth 2.0
describedBy:
headers:
Authorization:
description: |
Used to send a valid OAuth 2 access token. Do not use
with the "access_token" query string parameter.
type: string
queryParameters:
access_token:
description: |
Used to send a valid OAuth 2 access token. Do not use together with
the "Authorization" header
type: string
responses:
401:
description: |
Bad or expired token. This can happen if the user or Dropbox
revoked or expired an access token. To fix, you should re-
authenticate the user.
403:
description: |
Bad OAuth request (wrong consumer key, bad nonce, expired
timestamp...). Unfortunately, re-authenticating the user won't help here.
404:
description: Unauthorized
settings:
authorizationUri: org/oauth/authorize
accessTokenUri: org/oauth/token
authorizationGrants: [code,token]
scopes:
- "READ_RESOURCE"
- "POST_RESOURCE"
- basic
- comments
- relationships
- likes
mediaType: application/json
/employee:
get:
description:
This is a Get Call which throws some response in json.
responses:
200:
body:
application/json:
example: |
{
"empcode" : 1,
"ename": "Rafiq",
"company" : "org"
}
2 ответа
Приведенный ниже код представляет собой oauth 2.0 (raml 1.0)securitySchemes:
oauth_2_0:
description: |
This API supports OAuth 2.0 for authenticating all API requests.
type: OAuth 2.0
describedBy:
headers:
Authorization:
description: |
Used to send a valid OAuth 2 access token. Do not use with the "access_token" query
string parameter.
type: string
queryParameters:
access_token:
description: |
Used to send a valid OAuth 2 access token. Do not use together with the "Authorization"
header
type: string
responses:
401:
description: |
Bad or expired token. This can happen if the user or the API revoked or expired an
access token. To fix, you should re-authenticate the user.
403:
description: |
Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately,
re-authenticating the user won't help here.
settings:
authorizationUri: INSERT_OAUTH2_AUTHORIZATION_URI
accessTokenUri: INSERT_OAUTH2_ACCESS_TOKEN_URI
authorizationGrants: INSERT_OAUTH2_AUTHORIZATION_GRANTS
scope: [READ,WRITE]
как только вы включите этот код в свой raml, мы должны предоставить валидный URL в политике oauth. https: // имя-приложения / validate (внешний поставщик oauth)
или поставщик oauth должен указать URL-адрес, который требуется в raml (авторизация, access_token и URL-адрес валидации)
Ресурсы могут быть принудительно установлены с помощью oauth, чтобы было более безопасно делиться ресурсами.
после генерации потока из raml нам нужно развернуть приложение на cloudhub.
нам нужно предоставить организацию client_id и client_secret, чтобы она предоставляла access_token, в противном случае выдает неправильный клиент.
Политика Oauth основана на безопасности Mule Enterprise, чтобы понять танцы для различных типов грантов, пожалуйста, смотрите эту страницу документации:
http://www.mulesoft.org/documentation/display/current/Creating+an+OAuth+2.0a+Web+Service+Provider