Link Search Menu Expand Document

什么是授权服务器

  1. 什么是授权服务器
    1. 什么是授权服务器
    2. 授权服务器的用途
    3. 授权服务器的类型
      1. 内置授权服务器(Tenant Server)
      2. 自定义授权服务器(Customized Server)
    4. OneAuth 的授权服务器
    5. 如何选择授权服务器

什么是授权服务器

授权服务器的核心功能是生成并发放 OAuth2 和 OIDC 协议的 token。授权服务器也可以用于提供访问策略。为确保授权服务器安全性,每个授权服务器都有一个唯一的 issuer,以及用于对 token 进行签名的密钥。

授权服务器的用途

授权服务器有以下几种用途:

  • 可以使用 OneAuth 的授权服务器对接 OIDC 应用程序实现单点登录
  • 使用授权服务器保护 API 资源
  • 提供用户访问 web 服务的授权

OIDC 协议用于对应用程序的用户进行身份认证和授权。应用通过授权服务器提供的 ID token 来知晓用户是否通过了身份认证并取得用户的身份信息,如用户名、姓名等等。

OAuth2 协议用于对用户访问 API 的行为进行授权。资源服务器(应用)通过 access token 来验证用户的授权和访问级别。使用 OIDC 和 OAuth2 协议时,授权服务器对用户进行身份认证并颁发 access token 和 ID token。

注:由于不同的授权服务器之间没有信任关系,因此不能在不用的授权服务器之间混用 token。

授权服务器的类型

OneAuth 中提供了两种类型的授权服务器:

  • 内置授权服务器(Tenant Server)
  • 自定义授权服务器(Customized Server)

内置授权服务器(Tenant Server)

每个 OneAuth 租户注册创建成功后,系统将立即为租户提供一个“内置授权服务器”。

内置授权服务器颁发的 token 中的 issuer 信息是http://${yourOneAuthTenant} ,内置授权服务器的其它配置信息也是预置无法修改的。通过该内置授权服务器,可以使用 OIDC 协议将应用对接到 OneAuth 实现单点登录或获取 access token 以访问 OneAuth 的 API 接口。

内置授权服务器(Tenant Server)的元数据地址

https://${yourOneAuthTenant}/.well-known/openid-configuration

元数据地址,也称为服务发现端点(Discovery endpoints)

自定义授权服务器(Customized Server)

通过自定义授权服务器,可以运用自定义配置的授权策略来保护 API 资源,此时这些 API 就是自定义授权服务器所颁发的 token 的消费方。

在 OneAuth 中,每个租户的管理员可以创建多个自定义授权服务器来保护各种各样的 API 资源,并且在每个自定义授权服务器中可以自定义 OAuth2 协议的 scopesclaims以及访问策略,OneAuth 通过这样的方式实现和支持对受保护的 API 资源进行授权。

系统初始化的自定义授权服务器

OneAuth 在租户注册创建成功后,为了能够帮用户快速启用授权服务器保护 API 资源,系统将为用户创建了一个预先配置好的“默认授权服务器”,在自定义授权服务器中配置好了基本的访问策略和规则,可以满足 API 授权需求场景。该默认的自定义授权服务器(Customized Server)的名称为“默认授权服务器”,授权服务器 ID 为default

https://${yourOneAuthTenant}/oauth/v1/default/.well-known/openid-configuration

default_authz_server

authz_server_config

用户创建的自定义授权服务器

用户可以根据需要,创建的更多自定义授权服务器,以满足不同的业务的需要,OneAuth 为其生成一个随机的授权服务器 ID,如“3ad9a47b032e45ce80b”。

https://${yourOneAuthTenant}/oauth/v1/${authorizationServerId}/.well-known/openid-configuration

默认的自定义授权服务器的元数据地址

为了使用 OIDC 协议或 OAuth2 协议将应用对接到 OneAuth,需要通过 OneAuth 授权服务器的元数据地址来获取授权服务器的一系列配置信息,但是不包含用户自定义的 scope 和 claim 。

OneAuth 提供的自定义授权服务器“默认授权服务器”的元数据地址为:

https://${yourOneAuthTenant}/api/v1/authorizationServers/default/.well-known/openid-configuration

用户创建的自定义授权服务器的元数据地址为:

https://${yourOneAuthTenant}/api/v1/authorizationServers/$(authorizationServerId}/.well-known/openid-configuration

OneAuth 的授权服务器

OneAuth 授权的服务作为一项独立的服务,客户端向授权服务器进行请求授权,将授权与业务进行分离,它定义了不同的流来获取令牌,客户端从而能够在不需要知道用户凭证的情况下授予对资源的访问权。通过这样做,我们解决上述所有问题。

通过访问策略的设置,可以根据请求的用户不同、应用不同,给出不同的 Access Token 和 Id Token,以满足不断变化的 API 访问控制的安全需求。

image_1

如何选择授权服务器

如果需要使用 OIDC 协议将应用对接到 OneAuth 以实现单点登录,则可以使用内置授权服务器来实现;由于只有内置授权服务器颁发的 token 中包含描述 OneAuth 的 API 接口权限的 scope,所以如果是需要调用 OneAuth 的 API 接口,则必须使用内置授权服务器。

自定义授权服务器提供了更多、更灵活的授权方式,包括定义标准以外的 scope、不同情况下根据规则提供 scope、能提供自定义的 scope 和 claim。

下表描述了自定义授权服务器和内置授权服务器对各种需求能力的支持情况:

需求能力 自定义授权服务器(Customized) 内置授权服务器(Tenant)
使用 OIDC 协议实现单点登录 支持 支持
使用 OneAuth 提供的 SDK 和组件实现单点登录 支持 支持
通过 ID Token 获取用户信息 支持 支持
对自定义的 API 资源进行基于访问策略的授权 支持 不支持
在 token 中添加自定义的 scope 和 claim 支持 不支持
与 API 网关集成 支持 不支持
Machine-to-Machine 或微服务 支持 不支持
颁发包含 OneAuth API 接口权限 scope 的 access token 不支持 支持