UAA与Oathor

UAA与Oathor_第1张图片

微服务常用访问安全设计方案——API Tokens


UAA与Oathor_第2张图片

第三种,如上示意图所示,使用Token Based协议来对用户请求进行操作鉴权。

简单介绍下最基本的Token Based的交互方式:

简单介绍下最基本的Token Based的交互方式:

用户使用包含用户名和密码的credential从客户端发起资源请求

后端接受请求,通过授权中心,生产有效token字符串,返回给客户端

客户端获得token后,再次发出资源请求

后端接受带token的请求,通过授权中心,获取相关资源,返回给客户端


UAA与Oathor_第3张图片

以上图Google提供的Apps SSO的机制,简单介绍下SAML鉴权的交互方式:

用户请求访问自建的google application

当前application 生成一个 SAML 身份验证请求。SAML 请求将进行编码并嵌入到SSO 服务的网址中。

当前application将重定向发送到用户的浏览器。重定向网址包含应向SSO 服务提交的编码 SAML 身份验证请求。

SSO(统一认证中心或叫Identity Provider)解码 SAML 请求,并提取当前application的 ACS(声明客户服务)网址以及用户的目标网址(RelayState 参数)。然后,统一认证中心对用户进行身份验证。

统一认证中心生成一个 SAML 响应,其中包含经过验证的用户的用户名。按照 SAML 2.0 规范,此响应将使用统一认证中心的 DSA/RSA 公钥和私钥进行数字签名。

统一认证中心对 SAML 响应和 RelayState 参数进行编码,并将该信息返回到用户的浏览器。统一认证中心提供了一种机制,以便浏览器可以将该信息转发到当前application ACS。

当前application使用统一认证中心的公钥验证 SAML 响应。如果成功验证该响应,ACS 则会将用户重定向到目标网址。

用户将重定向到目标网址并登录到当前application。

Spring Cloud Security解决方案

Spring Cloud Security特点有:

基于OAuth2 和OpenID协议的可配置的SSO登录机制

基于tokens保障资源访问安全

引入UAA鉴权服务,UAA是一个Web服务,用于管理账户、Oauth2客户端和用户用于鉴权的问题令牌(Issue Token)。UAA实现了Oauth2授权框架和基于JWT(JSON web tokens)的问题令牌。

UAA与Oathor_第4张图片

下面简单介绍下UAA,事实上,它是由CloudFoundry发起的,也是CloudFoundry平台的身份管理服务(https://docs.cloudfoundry.org...)。

主要功能是基于OAuth2,当用户访问客户端应用时,生成并发放token给目标客户端。

UAA认证服务包含如下几个方面的内容:

认证对象。如用户、客户端以及目标资源服务器

认证类型。主要有授权码模式、密码模式以及客户端模式

认证范围,即认证权限,并作为一个命名的参数附加到AccessToken上。

接下来,结合实例,一起来看下UAA在Spring Cloud中的实践。


UAA与Oathor_第5张图片

如图所示,这是一个简单的基于Spring Cloud微服务架构的例子,它的主要组件有:

Eureka组件提供服务发现功能

独立的Config组件提供类似配置中心的服务,持久化层可以是文件系统,也可是git repository

Auth组件提供基于UAA的鉴权服务

Account组件保存用户的业务信息

其他组件不一一介绍了

这里主要讲Auth组件和Account组件是如何基于UAA服务进行认证和授权。

clientID和clientSecret

accessTokenUrl,这里指定了auth组件的uaa获取token的url

grant-type,即认证类型,这里指定为client_credentials

scope,这里指定了server,说明是这个认证请求只适用在各微服务之间的访问。

你可能感兴趣的:(UAA与Oathor)