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/
有什么须要交流的,能够叫我公众号留言: