OAuth 0 Provider
Скачать 472.99 Kb.
|
OAuth 2.0 ProviderМеханізм надання послуг OAuth 2.0 відповідає за виявлення захищених ресурсів OAuth 2.0. Конфігурація передбачає встановлення клієнтів OAuth 2.0, які можуть самостійно отримувати доступ до захищених ресурсів або від імені користувача. Провайдер це робить, керуючи та перевіряючи токени OAuth 2.0, які використовуються для доступу до захищених ресурсів. У відповідних випадках постачальник повинен також надати користувачеві інтерфейс для підтвердження того, що клієнт може отримати доступ до захищених ресурсів (наприклад, сторінки підтвердження). OAuth 2.0 Provider ImplementationРоль постачальника в OAuth 2.0 фактично розділена між Службою авторизації та Службою ресурсів, і в той час як вони іноді перебувають у тій самій програмі, з OAuth Spring Security ви можете розділити їх на дві програми, а також мати кілька служб ресурсів, які поділяються Служба авторизації. Запити на токени обробляються кінцевими точками контролерів Spring MVC, а доступ до захищених ресурсів обробляється стандартними фільтрами запитів Spring Security. Для реалізації сервера авторизації OAuth 2.0 потрібні наступні кінцеві точки:
Для реалізації сервера ресурсів OAuth 2.0 потрібен наступний фільтр: OAuth2AuthenticationProcessingFilter використовується для завантаження аутентифікації для запиту з токенмом автентифікованого доступу. Для всіх функцій провайдера OAuth 2.0 конфігурація спрощена за допомогою спеціальних адаптерів Spring OAuth @Configuration. Існує також простір імен XML для конфігурації OAuth, а схема знаходиться на http://www.springframework.org/schema/security/spring-security-oauth2.xsd. Простір імен - http://www.springframework.org/schema/security/oauth2. Authorization Server ConfigurationПід час налаштування сервера авторизації ви повинні розглянути тип гранту, який клієнт повинен використовувати для отримання токену доступу від кінцевого користувача (наприклад, код авторизації, облікові дані користувача, токен оновлення). Конфігурація сервера використовується для забезпечення реалізації служб деталізації служб і токенів, а також для включення або відключення певних аспектів механізму в глобальному масштабі. Зверніть увагу, однак, що кожен клієнт може бути налаштований спеціально з дозволами, щоб мати можливість використовувати певні механізми авторизації та отримання дотацій. І.е. лише тому, що ваш провайдер налаштований на підтримку типу надання грантів "client credentials", не означає, що конкретний клієнт має право використовувати цей тип гранту. Анотація @EnableAuthorizationServer використовується для налаштування механізму сервера авторизації OAuth 2.0 разом з будь-якими @Beans, які реалізують AuthorizationServerConfigurer (існує зручна реалізація адаптера з порожніми методами). Наведені нижче функції делегуються окремим конфігураторам, створеним Spring, і передаються в AuthorizationServerConfigurer:
Важливим аспектом конфігурації постачальника є спосіб передачі коду авторизації клієнту OAuth (в гранті коду авторизації). Код авторизації отримується клієнтом OAuth, направляючи кінцевого користувача на сторінку авторизації, де користувач може ввести свої облікові дані, в результаті чого перенаправлення з сервера авторизації постачальника на клієнт OAuth з кодом авторизації. Приклади цього викладені в специфікації OAuth 2. У XML є елемент Configuring Client DetailsClientDetailsServiceConfigurer (зворотний виклик з вашої AuthorizationServerConfigurer) може використовуватися для визначення реалізації в оперативній пам'яті або JDBC служби деталей клієнта. Важливими атрибутами клієнта є
Дані клієнта можуть бути оновлені в робочій програмі, доступ до основного магазину безпосередньо (наприклад, таблиці баз даних у випадку JdbcClientDetailsService) або через інтерфейс ClientDetailsManager (який також реалізує як реалізації ClientDetailsService). ПРИМІТКА. Схема служби JDBC не упакована в бібліотеку (оскільки існує забагато варіантів, які ви, можливо, хотіли б використати на практиці), але існує приклад, з якого можна починати з коду тесту в github. Managing TokensІнтерфейс AuthorizationServerTokenServices визначає операції, необхідні для управління точками OAuth 2.0. Зверніть увагу на наступне:
Під час створення вашої програми AuthorizationServerTokenServices ви можете розглянути можливість використання DefaultTokenServices, у якому є багато стратегій, які можна підключити, щоб змінити формат та зберігання токенів доступу. За замовчуванням він створює токени за допомогою випадкового значення та обробляє все, крім збереження токенів, які він делегує до TokenStore. Магазин за замовчуванням є вбудованою пам'яттю, але доступні інші реалізації. Ось опис з деякими обговореннями кожного з них
ПРИМІТКА. Схема служби JDBC не упакована в бібліотеку (оскільки існує забагато варіантів, які ви, можливо, хотіли б використати на практиці), але існує приклад, з якого можна починати з коду тесту в github. Будьте впевнені, щоб @EnableTransactionManagement, щоб запобігти зіткненню між клієнтськими додатками, конкуруючими за ті ж рядки, коли токени створюються. Зауважте також, що схема зразків має явні декларації ПЕРВИЧНА КЛЮЧА - вони також необхідні в одночасному середовищі. JWT TokensДля використання токерів JWT вам потрібен JwtTokenStore на сервері авторизації. Ресурсний сервер також повинен мати можливість декодувати токени, таким чином, JwtTokenStore має залежність від JwtAccessTokenConverter, і така ж реалізація потрібна як для сервера авторизації, так і для ресурсного сервера. Токени підписуються за умовчанням, а сервер ресурсів також повинен мати змогу перевіряти підпис, тому йому потрібна та сама симетрична (підписана) ключ, як сервер авторизації (загальний таємний або симетричний ключ) або йому потрібна громадськість ключ (ключ підтвердження), який відповідає приватному ключу (ключ підписування) на сервері авторизації (загальнодоступний або асиметричний ключ). Обліковий ключ (якщо він є) відкривається Сервером авторизації на кінцевій точці / oauth / token_key, яка за замовчуванням захищена за допомогою правила доступу "denyAll ()". Ви можете відкрити його шляхом введення стандартного виразу SpEL в AuthorizationServerSecurityConfigurer (наприклад, "permitAll ()", ймовірно, є адекватним, оскільки він є відкритим ключем). Для використання JwtTokenStore вам потрібен "spring-security-jwt" у вашому path classp (ви можете знайти його в тому самому сховищі github як Spring OAuth, але з різним циклом випуску). Grant TypesТипи грантів, що підтримуються AuthorizationEndpoint, можна налаштувати за допомогою авторизаці їServerEndpointsConfigurer. За умовчанням підтримуються всі типи грантів, окрім пароля (див. Нижче, щоб дізнатись, як його ввімкнути). Наступні властивості впливають на типи грантів:
У типів XML-дотику включені як дочірні елементи авторизації-сервера. |