## 一、登錄
~~~
http://127.0.0.1:8066
admin/admin
~~~
## 二、訪問后端api需帶上token
~~~
放header方式:
Authorization:Bearer xxx
?
放參數方式:
http://localhost:9900/api-user/users?access_token=xxx
~~~
## 三、后端api方法不做認證方式
~~~
zlt:
security:
ignore:
httpUrls: '不想認證攔截的url'
~~~
## 四、獲取當前登錄人對象
* 請求的方法參數SysUser上添加`@LoginUser`注解,則注入當前登錄人信息
~~~
//例1:只有id、username 和 roles
public void test(@LoginUser SysUser user)
?
//例2:能獲取SysUser對象的所有信息
public void test(@LoginUser(isFull = true) SysUser user)
~~~
## 五、獲取當前登錄的租戶
* 請求的方法參數上添加 @LoginClient 注解,則注入租戶id信息
~~~
//例子:
public void test(@LoginClien String clientId)
~~~
## 六、認證token類型切換
* 本項目token類型支持3種方式:`db`、`redis`、`jwt`
* 其中因為jwt使用的是非對稱加密,所以認證服務(zlt-uaa)需要配置為`authJwt`為私鑰加密,其他服務(例如網關)配置為`resJwt`為公鑰解密;
* 通過修改`zlt.oauth2.token.store.type`變量即可改變

* 例如現在為jwt方式,需要修改為redis方式,只修改`zlt-uaa`和`zuul-gateway`或者`sc-gateway`的`zlt.oauth2.token.store.type`變量為`redis`即可
## 七、無網絡隔離的系統環境下認證修改
* 因為當前的代碼是api網關統一認證的架構,適配有網絡隔離的環境下使用
* 而如果無網絡隔離的環境下代碼需求進行調整,將api網關的認證相關內容移去各個微服務里,架構可參考[無網絡隔離認證設計](http://www.hmoore.net/zlt2000/microservices-platform/1153640)

具體步驟:
### 7.1. 把一下內容從api網關移去各個微服務里:
* `zlt-auth-client-spring-boot-starter`jar包依賴
* `ResourceServerConfiguration`資源服務配置
* 刪除`UserInfoHeaderFilter`類
* 配置文件里面認證相關配置

* `pubkey.txt`公鑰
### 7.2. 修改`TokenArgumentResolver`類
改為通過SecurityContextHolder獲取用戶信息

## 八、token自動續簽
* 目前續簽功能只支持`redis token`模式,請先確保授權服務器和認證服務器的`zlt.oauth2.token.store.type=redis`
* **認證服務器**開啟自動續簽功能`zlt.security.auth.renew.enable=true`
* 白名單與非名單功能是**非必填項**,不配置默認所有應用的token都會續簽

> 自動續簽原理:[系統設計-認證設計-token自動續簽設計](http://www.hmoore.net/zlt2000/microservices-platform/1165104)
## 九、url級權限
該功能默認關閉,開啟需要在網關添加url權限相關配置

### 9.1. 打開網關認證配置
`zlt.security.auth.urlPermission.enable`設置為`true`
### 9.2. 配置只認證登錄,登錄后所有角色都能訪問的url(可選項)
`zlt.security.auth.urlPermission.ignoreUrls`
### 9.3. 配置白名單/黑名單(可選項)
`zlt.security.auth.urlPermission.includeClientIds`
`zlt.security.auth.urlPermission.exclusiveClientIds`
詳情查看:[url級權限控制](http://www.hmoore.net/zlt2000/microservices-platform/1202397)
## 十、登錄同應用同賬號互踢
實現了在同一個應用id下,不同的瀏覽器使用相同的用戶名登錄,相互互踢。
在`zlt-uaa`中通過參數`isSingleLogin`來配置是否開啟功能,默認為`false`為可以同時登錄,改為`true`則會互踢
~~~
zlt:
uaa:
isSingleLogin: true
~~~
## 十一、單點登錄與單點登出
在`zlt-uaa`工程中通過參數`unifiedLogout`來配置是否開啟單點登出功能,默認為`false`
~~~
zlt:
security:
auth:
unifiedLogout: true
~~~
### 11.1. demo樣例
* **zlt-demo\\ss-sso**:使用springSecurity來實現自動單點登錄,非前后端分離
* **zlt-demo\\web-sso**:前后端分離的單點登錄與單點登出
* **zlt-demo\\oidc-sso**:擁有獨立用戶體系的系統,使用OIDC協議的單點登錄與單點登出
### 11.2. 相關文章
* [單點登錄詳解](http://www.hmoore.net/zlt2000/microservices-platform/2278849)
* [前后端分離的單點登錄](http://www.hmoore.net/zlt2000/microservices-platform/2278850)
* [OIDC協議單點登錄](http://www.hmoore.net/zlt2000/microservices-platform/2278851)
* [單點登出詳解](http://www.hmoore.net/zlt2000/microservices-platform/2539642)
- springcloud
- springcloud的作用
- springboot服務提供者和消費者
- Eureka
- ribbon
- Feign
- feign在微服務中的使用
- feign充當http請求工具
- Hystrix 熔斷器
- Zuul 路由網關
- Spring Cloud Config 分布式配置中心
- config介紹與配置
- Spring Cloud Config 配置實戰
- Spring Cloud Bus
- gateway
- 概念講解
- 實例
- GateWay
- 統一日志追蹤
- 分布式鎖
- 1.redis
- springcloud Alibaba
- 1. Nacos
- 1.1 安裝
- 1.2 特性
- 1.3 實例
- 1. 整合nacos服務發現
- 2. 整合nacos配置功能
- 1.4 生產部署方案
- 環境隔離
- 原理講解
- 1. 服務發現
- 2. sentinel
- 3. Seata事務
- CAP理論
- 3.1 安裝
- 分布式協議
- 4.熔斷和降級
- springcloud與alibba
- oauth
- 1. abstract
- 2. oauth2 in micro-service
- 微服務框架付費
- SkyWalking
- 介紹與相關資料
- APM系統簡單對比(zipkin,pinpoint和skywalking)
- server安裝部署
- agent安裝
- 日志清理
- 統一日志中心
- docker安裝部署
- 安裝部署
- elasticsearch 7.x
- logstash 7.x
- kibana 7.x
- ES索引管理
- 定時清理數據
- index Lifecycle Management
- 沒數據排查思路
- ELK自身組件監控
- 多租戶方案
- 慢查詢sql
- 日志審計
- 開發
- 登錄認證
- 鏈路追蹤
- elk
- Filebeat
- Filebeat基礎
- Filebeat安裝部署
- 多行消息Multiline
- how Filebeat works
- Logstash
- 安裝
- rpm安裝
- docker安裝Logstash
- grok調試
- Grok語法調試
- Grok常用表達式
- 配置中常見判斷
- filter提取器
- elasticsearch
- 安裝
- rpm安裝
- docker安裝es
- 使用
- 概念
- 基礎
- 中文分詞
- 統計
- 排序
- 倒排與正排索引
- 自定義dynamic
- 練習
- nested object
- 父子關系模型
- 高亮
- 搜索提示
- kibana
- 安裝
- docker安裝
- rpm安裝
- 整合
- 收集日志
- 慢sql
- 日志審計s
- 云
- 分布式架構
- 分布式鎖
- Redis實現
- redisson
- 熔斷和降級