面试题答案
一键面试身份验证
- OAuth:主要专注于授权,本身并不直接处理身份验证。它允许资源所有者授权第三方应用访问其资源,而不暴露其凭据。例如,用户通过OAuth授权微博应用访问自己的照片,OAuth解决的是“应用能否访问资源”的问题。
- OpenID Connect:构建在OAuth之上,明确处理身份验证。它提供了一种标准方式,让依赖方(RP)能够确认最终用户的身份,并获取关于用户的基本信息,如姓名、电子邮件等。例如,用户使用微信账号登录某网站,OpenID Connect能让该网站确认用户确实是微信账号所有者,并获取一些基本资料。
授权范围
- OAuth:授权范围主要围绕对资源的访问权限。例如,一个应用可能被授权只读访问用户的文件,或者读写访问用户的社交媒体发布内容。范围定义了应用对资源的操作能力。
- OpenID Connect:除了包含类似OAuth的资源访问授权范围,还增加了与身份信息相关的范围。如“openid”是必须的范围,表示请求进行身份验证,“profile”范围可获取用户基本个人资料,“email”范围可获取用户邮箱等。
令牌类型
- OAuth:通常使用访问令牌(Access Token)来允许第三方应用访问资源,可能还包括刷新令牌(Refresh Token)用于获取新的访问令牌。访问令牌是应用访问资源的凭证。
- OpenID Connect:在OAuth令牌基础上,引入了ID令牌(ID Token)。ID令牌是一个安全的JSON Web Token(JWT),包含有关用户身份验证的信息,用于依赖方确认用户身份。
交互流程
- OAuth:典型流程涉及资源所有者、客户端应用、授权服务器和资源服务器。客户端向授权服务器请求授权,授权服务器引导资源所有者确认授权,然后返回授权码,客户端用授权码换取访问令牌,凭此访问资源服务器资源。
- OpenID Connect:流程在OAuth基础上,依赖方除了获取访问令牌外,还会获取ID令牌。授权服务器在颁发令牌时,会对ID令牌进行签名,依赖方通过验证签名来确认令牌的真实性和完整性,进而确认用户身份。