JSON Web Tokens (RFC 7519) 是推薦的JSON-encoded tokens的標準,特別用來驗證一個用戶和權限,雖然聲稱這能夠用來幹任何事情。html
toekn是由服務器發佈,由服務器密鑰簽名,客戶端後續的請求帶上這個token,服務端和客戶端均可以驗證這個請求是否合法的。java
WARNING:一旦JWT令牌簽署,其內容是不加密的,必須經過安全的經過傳輸(e.g., HTTPS),其中不要包含敏感的數據信息(e.g., passwords, private API keys)程序員
添加JWT支持api
在maven依賴中加入vertx-auth-jwt模塊:安全
咱們用JCEKS keystore來放測試用的key,這裏咱們生成不一樣長度的合適的能夠:服務器
keytool -genseckey -keystore keystore.jceks -storetype jceks -storepass secret -keyalg HMacSHA256 -keysize 2048 -alias HS256 -keypass secret keytool -genseckey -keystore keystore.jceks -storetype jceks -storepass secret -keyalg HMacSHA384 -keysize 2048 -alias HS384 -keypass secret keytool -genseckey -keystore keystore.jceks -storetype jceks -storepass secret -keyalg HMacSHA512 -keysize 2048 -alias HS512 -keypass secret keytool -genkey -keystore keystore.jceks -storetype jceks -storepass secret -keyalg RSA -keysize 2048 -alias RS256 -keypass secret -sigalg SHA256withRSA -dname "CN=,OU=,O=,L=,ST=,C=" -validity 360 keytool -genkey -keystore keystore.jceks -storetype jceks -storepass secret -keyalg RSA -keysize 2048 -alias RS384 -keypass secret -sigalg SHA384withRSA -dname "CN=,OU=,O=,L=,ST=,C=" -validity 360 keytool -genkey -keystore keystore.jceks -storetype jceks -storepass secret -keyalg RSA -keysize 2048 -alias RS512 -keypass secret -sigalg SHA512withRSA -dname "CN=,OU=,O=,L=,ST=,C=" -validity 360 keytool -genkeypair -keystore keystore.jceks -storetype jceks -storepass secret -keyalg EC -keysize 256 -alias ES256 -keypass secret -sigalg SHA256withECDSA -dname "CN=,OU=,O=,L=,ST=,C=" -validity 360 keytool -genkeypair -keystore keystore.jceks -storetype jceks -storepass secret -keyalg EC -keysize 256 -alias ES384 -keypass secret -sigalg SHA384withECDSA -dname "CN=,OU=,O=,L=,ST=,C=" -validity 360 keytool -genkeypair -keystore keystore.jceks -storetype jceks -storepass secret -keyalg EC -keysize 256 -alias ES512 -keypass secret -sigalg SHA512withECDSA -dname "CN=,OU=,O=,L=,ST=,C=" -validity 360
咱們須要在API routes中接入JWT token的程序:maven
下面的程序員用來生成新的JWT tokens:ide
1.咱們但願登陸和密碼信息已經過HTTP請求頭,咱們使用Apache Shiro認證工具
2.請求角色roles測試
3.咱們在token生成username, canCreate, canDelete 和 canUpdate
每一個API處理方法應該查詢當前用戶主體和要求,下面是apiDeletePage作的事情:
使用JWT tokens
爲了說明JWT token如何工做,讓咱們爲root用戶建立一個新的:
返回的文本中就是咱們須要保存的token,咱們能夠嘗試不實用token請求下:
經過使用受權的HTTP請求標頭,發送一個帶有JWT token請求,值急須要在Bearer <token value>。這裏咱們加上JWT toekn,修正以上的API請求:
採用API測試工具
ApiTest須要更新後支持了JWT tokens,咱們須要增長一個新的屬性來接受token的值
private String jwtTokenHeaderValue;
第一步咱們先取token中的用戶 foo:
1.在header中憑證信息
2.response payload中是text/plain類型,咱們能夠用BodyCodec編碼
3.成功後返回tokenRequest future對象,帶有token
使用JWT token 須要在發送HTTP請求的時候,經過header返回給服務端:
1.咱們把token放到帶有Bearer前綴的屬性中
2.把token放到header中
原文連接:http://vertx.io/docs/guide-for-java-devs/
有什麼須要交流的,能夠叫我公衆號留言: