为gRPC端点应用身份验证和授权
1. 授权与身份验证基础
授权是指用户记录具有特定属性,从而允许他们访问特定资源。例如,用户可能被赋予不同角色,如普通用户(User)和管理员(Admin),某些资源可能仅允许具有管理员角色的用户访问。若已认证但无相应角色的用户尝试访问该资源,系统虽能识别用户身份,但不会授予访问权限。
在Web环境中,未认证用户通常会收到401(未授权)HTTP响应码,而已认证但无权限访问特定资源的用户会收到403(禁止访问)响应码。
2. OpenID Connect和OAuth工作流程
OpenID Connect和OAuth相互关联。OAuth是用于指定授权模式的协议,但未规定用户认证方式,而OpenID Connect正是为此而开发。它们通常协同工作,典型流程如下:
1. 若用户未认证,应用程序将用户重定向到单点登录(SSO)提供商的登录页面,并在请求中传递客户端信息。
2. 用户输入凭据,若登录成功,SSO提供商将携带一次性访问码(OTAC)将客户端重定向回原应用程序。
3. 应用程序将该代码发送回SSO提供商,SSO提供商返回JSON Web Token(JWT)。
4. 必要时,Web服务器使用该令牌检索用户的额外信息。此时,用户已完成认证,令牌可在相关应用程序间共享。
graph LR
A[用户未认证] --> B[重定向到SSO登录页]
B --> C[用户输入凭据]
C --> D{登录成功?}
D -- 是 --> E[返回OTAC到应用]