OAuth2.0开发人员指南(Spring security oauth2)(2)

AuthorizationServerEndpointsConfigurer有一个pathMapping()方法。该方法有两个参数:

defaultPath 默认的端点URL

customPath 自定义的URL 

框架自己提供的URL路径是/oauth/authorize(授权端),/oauth/token (令牌端),/oauth/confirm_access (用户发送确认授权到这里),还有/oauth/error (用户呈现授权服务器授权出错的请求)。

注意:授权端/oauth/authorize(或者是它的影射)应该是受Spring Security保护的,所以它只能被已授权的用户访问。令牌端默认是通过使用支持使用HTTP基本身份验证客户机的秘密的注解@Configuration,被Spring Oauth保护的,但不是使用XML文件的(所以在这种情况下它被保护是很明确的)。

使用XML的<authorization-server/>元素可以使用一些属性来达到改变默认的端点URL。

自定义错误处理

授权服务器上错误处理使用标准的 Spring MVC 功能,即 @ExceptionHandler 端点本身的方法。用户还可以提供一个 WebResponseExceptionTranslator 端点本身,最好的办法是改变响应的内容而不是他们呈现的方式。异常的呈现代表 HttpMesssageConverters (这个可以添加到MVC的配置中)令牌的端点和OAuth的错误视图(/ OAuth /error)的授权端点。提供一个whitelabel错误端点,但是用户可能需要提供一个自定义的实现(例如,就添加一个 @Controller,它的请求映射是 @RequestMapping(“/ oauth /error”))。

配置资源服务器

资源服务器(可能和授权服务器或者一个单独的应用程序在同一台主机上)提供被OAuth2 令牌保护的资源。 Spring OAuth提供一个Spring Security授权过滤器,它实现保护资源的功能。在@Configuration类中,你可以使用@EnableResourceServer来开启/关闭过滤器,使用ResourceServerConfigurer来配置它。 下面是可配置的属性:

tokenServices:定义令牌服务的实体(ResourceServerTokenServices类的实例)。

resourceId:资源ID(可选的,建议配置,如果不为空,授权服务器会对它进行验证)。

@EnableResourceServer注解把一个 OAuth2AuthenticationProcessingFilter 类型过滤器添加到Spring Security 过滤链中。

在 XML中,有一个<resource-server/>元素,它有一个id属性 – 这是servlet过滤器的bean id,它过滤哪些可以被添加到Spring Security链中。

配置OAuth-Aware表达式处理器

你可能想要使用Spring Security的使用表达式语言配置访问控制的优点。 表达式处理器在 @EnableResourceServer配置中以默认方式进行注册。 表达式包括#oauth2.clientHasRole,#oauth2.clientHasAnyRole, 和 #oath2.denyClient,这些可以提供基于oauth客户端角色的访问控制(详细列表见OAuth2SecurityExpressionMethods)。 在XML中,你可以在<http/> 安全配置节点内使用expression-handler元素注册一个oauth-aware表达式处理器。

OAuth 2.0 客户端

OAuth 2.0 客户端控制着 OAuth 2.0保护的其它服务器的资源的访问权限。 配置包括建立相关受保护资源与有权限访问资源的用户之间的连接。 客户端也需要实现存储用户的授权代码和访问令牌的功能。

受保护资源的配置

受保护的资源(或称为远程资源)可以使用OAuth2ProtectedResourceDetails类型的实体bean定义。 一个受保护的资源有以下属性:

id:资源id。它仅在客户端搜索资源的时候使用;在OAuth协议中它从未被用到。它也被用作bean的id。

clientId:OAuth客户端id。OAuth提供端依赖这个id来识别客户端。

clientSecret:与资源有关的秘密。默认情况下,该值不为空。

accessTokenUri:提供访问口令的OAuth提供者终端的统一资源标识符(URI)。

scope:以逗号分隔的字符串列表,标识可访问资源的范围。默认情况下,该值为空。

clientAuthenticationScheme: 客户端对访问的令牌终端授权时使用的机制。 建议值: "http_basic" 和 "form"。 默认值: "http_basic"。 见OAuth 2 帮助文档2.1节。

不同的授权类型有不同的实现OAuth2ProtectedResourceDetails (对于client_credentials授权类型,使用ClientCredentialsResource )的方式。对于需要进行用户身份验证的授权类型,还有一个属性:

userAuthorizationUri: 用户访问资源需要身份验证时跳转页面的URI。 注意这个字段不是必填的,它依赖于被支持的OAuth 2的配置文件类型。

在XML中,可以使用<resource/>元素创建一个OAuth2ProtectedResourceDetails类型的实体bean。 它有上面提到的所有的属性。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4f63b908d00e7b56035edf4b19b88388.html