shiro-uaa 是基於Shiro 實現的輕量級使用者帳號和身分認證解決方案(UAA) 服務。
當剛開始一個專案時,相信Shiro的簡單會成為大多數開發者權限框架的首選,但當專案擴展後,從1到n,並且需要統一認證和授權時,Shiro本身並不支援統一認證和授權成為了限制,Shiro有CasFilter,但是CAS又是另外一套框架,較為重,為了能讓認證授權服務更簡單,輕量,易用,所以有了Shiro-UAA
輕量UAA Server
純粹的Shiro
學習簡單
容易擴展
開箱即用
1、auth-server
maven
內建endpoint
URI位址說明/uaa-auth/authentication請求授權的位址,會導向至你的登入頁/uaa-auth/authentication/apporveAuth Server同意授權,分發code位址/uaa-auth/access-token從Auth Server取得access- token的位址/uaa-auth/logout從Auth Server登出的位址可擴展api
介面名稱說明AccessClientService接取應用服務AccessTokenServiceaccess-token服務AccountService用戶服務AuthCodeServicecode服務RoleService角色服務login
自訂Login頁面和登入驗證,implement org.apache.shiro.authc.credential.CredentialsMatcher ,實現登入時的校驗邏輯,設定shiro.loginUrl
forwardError
預設情況下,當Server出現OAuthProblem的時候,會帶著錯誤訊息跳到Resource的位址(redirect_uri參數),如果配置了forwardErrorUrl則不會重定向而顯示錯誤頁面,頁面需要自訂,配置shiro.uaa .server.forwardErrorUrl, 此配置的目的在於防止使用Server做非正常跳轉
擴充的配置參數
參數名稱說明shiro.uaa.server.codeExpiresUAA分發Code過期時間,單位為秒shiro.uaa.server.accessTokenExpiresUAA分發AccessToken過期時間,單位為秒shiro.uaa.server.refreshTokenExpiresUAA分發RefreshToken過期時間,單位為秒過期時間,單位為秒過期時間,單位為秒過期時間,單位為秒過期時間,單位為秒過期時間,單位為秒過期時間,單位為秒過期時間,單位為秒過期。 loginUrl自訂的登入位址shiro.uaa.server.clients[].name接取應用程式名稱,使用預設記憶體AccessClientService時有效shiro.uaa.server.clients[].clientId接取應用clientId,使用預設記憶體AccessClientService時有效shiro.uaa.server.clients[].clientSecret接取應用clientSecret,使用預設記憶體AccessClientService時有效shiro.uaa.server.roles[].name角色名稱,對應Shiro的Role,使用預設記憶體RoleService時有效shiro.uaa .server.roles[].permCodes[]角色權限,對應Shiro的Permission,使用預設記憶體RoleService時有效shiro.uaa.server.roles[].clientId角色所屬應用,使用預設記憶體RoleService時有效shiro.uaa.server .accounts[].username帳號登錄名,使用預設記憶體AccountService時有效shiro.uaa.server.accounts[].password帳號密碼,使用預設記憶體AccountService時有效shiro.uaa.server.accounts[].roles[]帳號擁有角色,使用預設記憶體AccountService時有效shiro.uaa.server.forwardErrorUrl自訂OAuthProblem Error位址2、resource-server
maven
filterChainDefinition
implement CustomFilterChainDefinition ,定義不同的path經過不同的Filter,預設/**經過resourceServerFilter
logout
先從Resource Server登出,再從UAA登出,配置shiro.logoutUrl參數載入LogoutEndpoint
註解
和Shiro一樣
註解名@RequiresRoles@RequiresPermissions@RequiresUser@RequiresAuthentication@RequiresGuest擴充的配置參數
參數名稱說明shiro.uaa.resource.serverSchemeUAA位址的Schemeshiro.uaa.resource.serverHostUAA位址的Hostshiro.uaa.resource.serverPortUAA位址的Portshiro.uaa.resource.serverContextPathUAA位址的ContextPathshiro.uaa.resource. uaa.resource.clientSecretUAA分配的ClientSecretshiro.logoutUrlResource Server登出位址3、biz-logger
記錄用戶的業務記錄
註解
註解名@BizLogger註解方法說明remark備註,預設:""class_是否記錄類別名,預設:truemethod是否記錄方法名,預設:truearguments需要記錄參數的索引,預設:{}return_是否記錄回傳值,預設:falsesubject是否記錄使用者名,預設:trueBizLoggerEntityStringifier
implement BizLoggerEntityStringifier ,自訂logger輸出內容
jdk1.8+ and spring boot
提供auth-server可部署服務
為auth-server提供使用者metrics