关于OAuth 2.0、OpenID Connect及身份认证授权组件的技术咨询
OAuth 2.0与OpenID Connect核心组件及常见问题解答
核心组件职责
- Authentication Server(认证服务器):专注于用户身份验证,负责确认用户身份的合法性,比如校验账号密码、生物识别信息等,输出身份验证结果。
- Authorization Server(授权服务器):OAuth 2.0体系的核心,处理客户端的授权请求,决策是否允许客户端访问用户的受保护资源,主要工作包括签发Access Token、刷新令牌,以及执行各类授权流程(如授权码模式、密码模式)。
- Identity Provider(IDP,身份提供商):OpenID Connect(OIDC)体系的核心角色,兼具身份验证和身份数据提供能力——既验证用户身份,也向客户端提供用户的身份信息(如用户名、邮箱)。多数情况下会同时实现授权服务器的功能。
- Identity Server(身份服务器):通常是指实现了IDP功能的具体服务,和IDP概念常混用,用于集中管理用户身份、处理认证授权请求、签发ID Token和Access Token。
- Identity Manager(身份管理器):聚焦用户身份生命周期管理,负责账号创建、密码修改、权限分配、账号禁用、身份属性(角色、部门等)维护等后台运维工作,不直接参与前端的认证授权交互。
常见问题解答
1. 用户ID/密码是否存储在Identity provider中?
通常是存储在IDP中的,因为IDP需要直接验证用户的身份凭证,一般会保存哈希加密后的密码(不会存储明文)。也有例外场景:如果IDP对接了LDAP、Active Directory等外部身份存储系统,此时IDP不存储密码,而是委托外部系统完成凭证验证。
2. 是否有可在本地电脑部署的开源Identity provider服务器?
有多款可选:
- Keycloak:功能全面,支持OAuth 2.0、OIDC、SAML等多种协议,配置灵活,适合企业级应用或个人开发测试。
- IdentityServer4:基于.NET生态的开源IDP,轻量且高度可定制,适配.NET相关项目的身份服务需求。
- Authelia:轻量级开源身份认证系统,支持多因素认证,适合小型部署或个人自用场景。
- ORY Hydra:专注于OAuth 2.0和OIDC的开源授权服务器,主打安全性与可扩展性,适合构建高可用的身份服务架构。
3. 用户认证后,ID Token和Access Token分别由哪个组件签发?
- ID Token:OpenID Connect专属令牌,由**Identity Provider(IDP)**签发,用于向客户端证明用户身份,令牌内包含sub(用户唯一标识)、name、email等核心身份信息。
- Access Token:由**Authorization Server(授权服务器)**签发,用于客户端访问受保护的API资源,API服务通过验证该令牌的有效性决定是否允许访问。在OIDC体系中,IDP通常同时承担授权服务器的角色,因此两个令牌可能由同一服务签发,但职责分属不同组件功能。
内容的提问来源于stack exchange,提问作者CuriousMind
相关产品推荐
相关产品推荐

