Vert.x 用JWT验证Web请求 译<十>

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/

有什么须要交流的,能够叫我公众号留言:

相关文章
相关标签/搜索