1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/suninformation-ymate-module-oauth

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

YMP-OAuth:

OAuth2授权服务模块,特性如下:

  • поддержка клиентского режима grant_type=client_credentials;
  • поддержка режима авторизации grant_type=authorization_code;
  • поддержка пароля mode grant_type=password;
  • поддержка упрощённого режима response_type=token;
  • поддержка настраиваемых разрешений scope, по умолчанию поддерживаются snsapi_base и snsapi_userinfo;
  • поддержка обновления токенов grant_type=refresh_token;
  • проверка действительности токенов;
  • ограничение запросов к интерфейсу с помощью перехватчиков:
    • перехватчик для клиентских разрешений ClientAccessTokenCheckInterceptor.class;
    • перехватчик разрешений для пользовательских веб-страниц UserAccessTokenCheckInterceptor.class.

Maven пакет зависимостей:

<dependency>
  <groupId>net.ymate.module</groupId>
  <artifactId>ymate-module-oauth</artifactId>
  <version>1.0.0</version>
</dependency>

Модуль конфигурации параметров:

#-------------------------------------
# module.oauth 模块初始化参数
#-------------------------------------

# AccessToken доступ к учётным данным истекает, в секундах, значение по умолчанию: 7200 (два часа)
ymp.configs.module.oauth.access_token_expire_in=

# Максимальное количество обновлений учётных данных AccessToken, если равно 0, то не ограничено
ymp.configs.module.oauth.refresh_count_max=

# RefreshToken срок действия учётных данных обновления, в днях, значение по умолчанию: 30
ymp.configs.module.oauth.refresh_token_expire_in=

# Срок действия кода авторизации, в минутах, значение по умолчанию: 5
ymp.configs.module.oauth.authorization_code_expire_in=

# Префикс имени кэша, значение по умолчанию: ""
ymp.configs.module.oauth.cache_name_prefix=

# Включить разрешённые режимы авторизации, несколько режимов разделяются символом '|', значение по умолчанию: none, доступные значения: [authorization_code|implicit|password|refresh_token|client_credentials|none]
ymp.configs.module.oauth.allow_grant_types=

# Интерфейс реализации генератора токенов, значение по умолчанию: net.ymate.module.oauth.impl.DefaultTokenGenerator
ymp.configs.module.oauth.token_generator_class=

# Адаптер интерфейса реализации хранилища токенов, значение по умолчанию: пустое
ymp.configs.module.oauth.storage_adapter_class=

# Интерфейс адаптера реализации обработки ошибок, значение по умолчанию: net.ymate.module.oauth.impl.DefaultErrorAdapter
ymp.configs.module.oauth.error_adapter_class=

# Процессор обработки авторизации OAuth, интерфейс реализации, значение по умолчанию: net.ymate.module.oauth.web.impl.DefaultNeedAuthorizationProcessor
ymp.params.module.oauth.need_authorization_processor_class=

# Обработчик ошибок OAuth, необязательный параметр
ymp.configs.webmvc.error_processor_class=net.ymate.module.oauth.web.WebErrorProcessor

**Пример кода:**

Ограничение разрешений интерфейса с помощью перехватчика, разрешение должно быть snsapi_userinfo:

@RequestMapping("/sns/userinfo")
@Before(UserAccessTokenCheckInterceptor.class)
@OAuthScope(IOAuth.Const.SCOPE_SNSAPI_USERINFO)
public IView userinfo(@RequestParam(IOAuth.Const.ACCESS_TOKEN) String accountToken, @RequestParam(IOAuth.Const.OPEN_ID) String openId) throws Exception {
    OAuthResponse _response = null;
    IOAuthScopeProcessor _processor = OAuth.get().getScopeProcessor(_scope.value());
    if (_processor != null) {
        _response = _processor.process(WebContext.getRequest(), (OAuthTokenBean) WebContext.getRequest().getAttribute(OAuthTokenBean.class.getName()));
    }
    if (_response == null) {
        _response = OAuthResponseUtils.badRequest(OAuthError.ResourceResponse.INVALID_REQUEST);
    }
    return new HttpStatusView(_response.getResponseStatus(), false).writeBody(_response.getBody());
}

**Клиентский режим:**
* Запрос URL-адреса с использованием метода POST:
http://localhost:8080/oauth2/token

* Сообщение запроса POST:
POST /oauth2/token HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded

client_id=default&client_secret=7890123&grant_type=client_credentials

**Режим авторизации:**
* Получение кода авторизации с использованием метода GET для запроса URL-адреса, успешное выполнение перенаправляет и включает код авторизации:

http://localhost:8080/oauth2/sns/authorize?client_id=default&response_type=code&redirect_uri=http://localhost:8080/oauth2/sns/redirect&scope=snsapi_base&state=Helloworld

* После получения кода авторизации получение токена доступа с использованием метода POST для запроса URL-адреса:

http://localhost:8080/oauth2/sns/access_token

* Сообщение запроса POST:

POST /oauth2/sns/access_token HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded

code=f32ab01222936356e5a8352b9beeacc3&client_id=default&client_secret=7890123&grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Foauth2%2Fsns%2Fredirect **Запрос с использованием метода GET к URL-адресу** приводит к успешному перенаправлению и получению токена access_token:

    http://localhost:8080/oauth2/sns/authorize?client_id=default&response_type=token&redirect_uri=http://localhost:8080/oauth2/sns/redirect&scope=snsapi_base&state=Helloworld

**Режим пароля:**

   - Запрос методом POST к URL-адресу:

        http://localhost:8080/oauth2/sns/access_token

   - Сообщение запроса POST:

        POST /oauth2/sns/access_token HTTP/1.1
        Host: localhost:8080
        Content-Type: application/x-www-form-urlencoded

        client_id=default&client_secret=7890123&grant_type=password&username=suninformation&password=8fa6adcdaa9e50635c5bf54eacfca83a&scope=snsapi_userinfo

**Обновление токена:**

   - Запрос методом POST к URL-адресу:

       http://localhost:8080/oauth2/sns/refresh_token

   - Сообщение запроса POST:

         POST /oauth2/sns/refresh_token HTTP/1.1
         Host: localhost:8080
         Content-Type: application/x-www-form-urlencoded

         grant_type=refresh_token&refresh_token=207f2a5de46198dc8b42ba175e75cac1&client_id=default&client_secret=7890123

**Проверка действительности токена:**

   - Запрос методом GET к URL-адресу:
   
         http://localhost:8080/oauth2/sns/auth?access_token=39ec0af0b9f5f7ebe2877389bb2919b4&open_id=6bf18fa2f9a136273fb90e58dff4a964

**Получение базовой информации авторизованного пользователя:**

   - Запрос методом GET к URL-адресу:

          http://localhost:8080/oauth2/sns/userinfo?access_token=8fec1e7eca5d6e18b48d33f1725f6082&open_id=6bf18fa2f9a136273fb90e58dff4a964
#### One More Thing

YMP не только предоставляет удобный опыт быстрой разработки для Web и других Java проектов, но и постоянно предлагает более богатый опыт проектной практики.

Заинтересованные друзья могут присоединиться к официальной группе QQ 480374360, чтобы общаться и учиться вместе, помогая YMP расти!

Чтобы узнать больше о фреймворке YMP, посетите официальный сайт: http://www.ymate.net/.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Модуль сервиса авторизации OAuth2, реализованный на основе фреймворка YMP. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/suninformation-ymate-module-oauth.git
git@api.gitlife.ru:oschina-mirror/suninformation-ymate-module-oauth.git
oschina-mirror
suninformation-ymate-module-oauth
suninformation-ymate-module-oauth
master