28.1.2 Resource Server

为了使用access token,你需要一个资源服务器(可以跟授权服务器是同一个)。创建资源服务器很简单,只需要添加@EnableResourceServer,提供一些配置以允许服务器解码access token。如果应用也是授权服务器,由于它知道如何去解码tokens,所以也就不需要做其他事情。如果你的app是独立的服务,那你就需要给它添加以下可选配置中的某一项:

  • security.oauth2.resource.user-info-uri用于/me资源(例如,PWS的https://uaa.run.pivotal.io/userinfo)。
  • security.oauth2.resource.token-info-uri用于token解码端点(例如,PWS的https://uaa.run.pivotal.io/check_token)。

如果user-info-uritoken-info-uri都指定了,你可以设置flag筛选出最想要的那个(默认prefer-token-info=true)。

另外,如果token是JWTs,你可以配置security.oauth2.resource.jwt.key-value解码它们(key是验签的key)。验签的键值可以是一个对称密钥,也可以是PEM编码的RSA公钥。如果你没有key,并且它是公开的,你可以通过security.oauth2.resource.jwt.key-uri提供一个下载URI(有一个"value"字段的JSON对象),例如,在PWS平台上:

$ curl https://uaa.run.pivotal.io/token_key
{"alg":"SHA256withRSA","value":"-----BEGIN PUBLIC KEY-----\nMIIBI...\n-----END PUBLIC KEY-----\n"}

同时创建JWT和JWK属性会产生错误,security.oauth2.resource.jwt.key-uri(或security.oauth2.resource.jwt.key-value)和security.oauth2.resource.jwk.key-set-uri只能选一个配置

如果你使用security.oauth2.resource.jwt.key-uri,授权服务器需要在应用启动时也运行起来,如果找不到key,它将输出warning,并告诉你如何解决。

OAuth2 资源受一个有顺序的filter过滤器链保护,顺序可由security.oauth2.resource.filter-order配置,默认地,这些过滤器都是在保护Actuator端点的过滤器之后的(因此actuator过滤器会在HTTP Basic除非你修改过滤器顺序)

results matching ""

    No results matching ""