OAuth2 в коннекторе мулов

Я пытаюсь подключиться к третьей стороне с помощью соединителя мула. Схема безопасности для доступа к этому стороннему приложению — OAuth2. Прошу помощи в установке правильной конфигурации. Ниже приведен мой поток мула (3.5.2):

<XXX-auth2:config name="TestAuth" consumerKey="abc" consumerSecret="1234" doc:name="TestAuth">
        <XXX-auth2:oauth-callback-config domain="localhost" localPort="8082" path="callback" remotePort="8082" async="false"/>
    </XXX-auth2:config>
    <flow name="testFlow1" doc:name="testFlow1">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082"  path="testoauth" doc:name="HTTP" />
         <XXX-auth2:authorize config-ref="TestAuth" doc:name="TestAuth"/>
        <logger message="Test Auth output:#[flowVars['tokenId']]" level="INFO" doc:name="Logger"/>
    </flow>

Я новичок в Oauth и у меня есть следующие вопросы:

1) Что такое URL-адрес обратного вызова и что я должен настроить. Могу ли я просто использовать что-нибудь там? Должен ли этот URL-адрес быть доступен в Интернете или я могу использовать локальный хост? 2) Как проверить эту конфигурацию? Я делаю это, нажимая входящий URL-адрес http, т.е. http://localhost:8082/testoauth. Вывод, который я получаю, - ошибка метода не разрешена (405). 3) Если я нажму URL-адрес обратного вызова, например, localhost:8082/callback, я получу исключение NoAuthorizationCodeFound. Как поступить? 4) Как узнать, правильно ли сгенерирован токен доступа? 5) Нужно ли специально хранить токены доступа для будущего использования?

Когда я нажимаю URL-адрес http:/localhost:8082/testoauth, я получаю сообщение об ошибке метода не разрешено. Я получаю ответ как {"code":"MethodNotAllowedError","message":"GET is not limited"}. Означает ли это, что мой способ получения доступа неверен, или это означает что-то еще? Я застрял в этой точке. Пожалуйста помоги.

Пожалуйста, осветите процесс применения конфигурации OAuth для доступа к защищенным ресурсам.


person rst    schedule 13.01.2015    source источник


Ответы (1)


1) URL-адрес обратного вызова предназначен для поставщика OAuth для перенаправления обратно в ваше приложение после того, как пользователь авторизовал приложение. Соединитель автоматически создаст для вас входящую конечную точку и обратный вызов HTTP и программно передаст URL-адрес поставщику услуг. Затем коннектор будет прослушивать этот обратный вызов по этому адресу.

2) Вызов /testoauth должен осуществляться через HTTP GET в браузере, чтобы он мог перенаправить для авторизации поставщику услуг.

Localhost будет нормально работать через браузер.

3) Прямой вызов URL-адреса обратного вызова бесполезен. Поставщик услуг должен позвонить, чтобы вернуться к вашему приложению с кодом авторизации, который будет использоваться в последующих запросах к их API.

4) Попробуйте зарегистрировать токен после авторизации:

<logger level="INFO"
message="The user identification is #[flowVars[
'OAuthAccessTokenId']]" />

Обратите внимание, это не сам токен доступа OAuth, а запись идентификатора в хранилище объектов, которая содержит информацию oauth, включая токен доступа и т. д.

5) Нет. Mule позаботится об этом с помощью своего внутреннего хранилища объектов. Однако это можно настроить для других поставщиков и механизмов сохранения и т. д., чтобы токены можно было использовать между экземплярами Mule и т. д. См. http://www.mulesoft.org/documentation/display/current/Mule+Object+Stores.

Не люблю заниматься саморекламой, но глава 4 http://shop.oreilly.com/product/0636920025726.do отвечает на эти вопросы.

Также документация Mule:

http://www.mulesoft.org/documentation/display/current/Using+a+Connector+to+Access+an+OAuth+API

person Ryan Carter    schedule 13.01.2015
comment
Спасибо Райан за подробное объяснение каждого из моих вопросов. Однако я немного смущен тем, как использовать OAuth в ситуациях, когда браузер не задействован. Например, у меня есть требование, когда мое пакетное задание должно вызывать сторонний API, защищенный OAuth2. Можете ли вы предоставить какой-либо пример потока мулов о том, как его реализовать. - person rst; 13.01.2015
comment
Я добавил больше деталей к пункту № 2. Пожалуйста помоги. Я почти застрял в этом месте. - person rst; 14.01.2015
comment
Можете ли вы поделиться своим кодом коннектора? Вот где происходит волшебство. - person Ryan Carter; 14.01.2015
comment
Я ответил на ваш новый вопрос здесь: stackoverflow.com/questions/27938336/. Вы используете поток учетных данных клиента, поэтому не используйте аннотации @OAuth2. Вам придется свернуть свой собственный, используя управление соединением. - person Ryan Carter; 14.01.2015