A lightweight User Account and Authentication (UAA) Server base on Shiro.
Когда только начинается проект, Shiro может стать предпочтительным выбором для большинства разработчиков в качестве фреймворка авторизации. Однако, когда проект расширяется от 1 до n и требуется единая аутентификация и авторизация, ограничения Shiro становятся очевидными. Хотя у Shiro есть CasFilter, CAS представляет собой отдельный фреймворк, который может быть слишком громоздким. Чтобы сделать сервисы аутентификации и авторизации более простыми, лёгкими и удобными в использовании, был создан Shiro-UAA.
auth-server
<dependency>
<groupId>com.github.xfslove</groupId>
<artifactId>shiro-uaa-auth-server</artifactId>
<version>1.0.7-SNAPSHOT</version>
</dependency>
URI адрес | Описание |
---|---|
/uaa-auth/authentication | Запрос на авторизацию, перенаправляет на страницу входа |
/uaa-auth/authentication/apporve | Auth Server одобряет авторизацию и отправляет код доступа |
/uaa-auth/access-token | Получение access-токена с Auth Server |
/uaa-auth/logout | Выход из Auth Server |
Интерфейс | Описание |
---|---|
AccessClientService | Подключение к сервисам приложений |
AccessTokenService | Сервис access-токенов |
AccountService | Сервис пользователей |
AuthCodeService | Сервис кодов |
RoleService | Сервис ролей |
Можно настроить собственную страницу входа и логику проверки подлинности, реализовав интерфейс org.apache.shiro.authc.credential.CredentialsMatcher
. Конфигурация выполняется через shiro.loginUrl
.
По умолчанию, при возникновении ошибки OAuth, сервер перенаправляет пользователя на адрес, указанный в параметре redirect_uri. Если настроено shiro.uaa.server.forwardErrorUrl
, то вместо перенаправления отображается страница с ошибкой. Страница должна быть настроена пользователем. Конфигурация осуществляется через shiro.uaa.server.forwardErrorUrl
. Эта конфигурация предназначена для предотвращения использования сервера для ненормальных перенаправлений.
Параметр | Описание |
---|---|
shiro.uaa.server.codeExpires | Срок действия кода, выданного UAA, в секундах |
shiro.uaa.server.accessTokenExpires | Срок действия access-токена, выданного UAA, в секундах |
shiro.uaa.server.refreshTokenExpires | Срок действия refresh-токена, выданного UAA, в секундах |
shiro.loginUrl | Настроенный адрес входа |
shiro.uaa.server.clients[].name | Имя приложения для подключения |
shiro.uaa.server.clients[].clientId | Идентификатор клиента приложения для подключения |
shiro.uaa.server.clients[].clientSecret | Секрет клиента приложения для подключения |
shiro.uaa.server.roles[].name | Название роли, соответствующее Shiro Role |
shiro.uaa.server.roles[].permCodes[] | Разрешения роли, соответствующие Shiro Permission |
shiro.uaa.server.roles[].clientId | Приложение, которому принадлежит роль |
shiro.uaa.server.accounts[].username | Логин учётной записи |
shiro.uaa.server.accounts[].password | Пароль учётной записи |
shiro.uaa.server.accounts[].roles[] | Роли, которыми обладает учётная запись |
shiro.uaa.server.forwardErrorUrl | Пользовательский адрес ошибки OAuthProblem |
resource-server
<dependency>
<groupId>com.github.xfslove</groupId>
<artifactId>shiro-uaa-resource-server</artifactId>
<version>1.0.7-SNAPSHOT</version>
</dependency>
Реализовать интерфейс CustomFilterChainDefinition
. ,定义不同的 path 经过不同的 Filter, 默认 /**
经过 resourceServerFilter
Сначала необходимо выйти из Resource Server, а затем из UAA. Для этого нужно настроить параметр shiro.logoutUrl
, который загружает LogoutEndpoint
.
Аналогично Shiro:
注解名 |
---|
@RequiresRoles |
@RequiresPermissions |
@RequiresUser |
@RequiresAuthentication |
@RequiresGuest |
Параметр имени | Описание |
---|---|
shiro.uaa.resource.serverScheme | Схема адреса UAA |
shiro.uaa.resource.serverHost | Хост адреса UAA |
shiro.uaa.resource.serverPort | Порт адреса UAA |
shiro.uaa.resource.serverContextPath | ContextPath адреса UAA |
shiro.uaa.resource.clientId | ClientId, назначенный UAA |
shiro.uaa.resource.clientSecret | ClientSecret, назначенный UAA |
shiro.logoutUrl | Адрес выхода из Resource Server |
<dependency>
<groupId>com.github.xfslove</groupId>
<artifactId>shiro-uaa-biz-logger</artifactId>
<version>1.0.7-SNAPSHOT</version>
</dependency>
注解名 |
---|
@BizLogger |
Метод аннотации | Описание |
---|---|
remark | Примечание, по умолчанию: "" |
class_ | Регистрировать ли имя класса, по умолчанию: true |
method | Регистрировать ли имя метода, по умолчанию: true |
arguments | Индекс параметров, которые необходимо зарегистрировать, по умолчанию: {} |
return_ | Регистрировать ли возвращаемое значение, по умолчанию: false |
subject | Регистрировать ли имя пользователя, по умолчанию: true |
Реализуйте BizLoggerEntityStringifier
, чтобы настроить вывод содержимого logger.
jdk1.8+ и spring boot
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )