服务器到服务器的 OAuth 流程:
- 您的 Web 服务器使用共享密钥连接到您的授权服务器(AS,在本例中包含在 Web API 主机中)
- AS(Web API)将令牌返回到您的 Web 服务器
- Web 服务器存储令牌以在下一次 Web API 调用中使用它
至于客户端到服务器,流程是不同的:
- 当用户使用您的 Web 应用程序并且需要访问 Web API 时,您的应用程序会将浏览器重定向到身份验证服务器,在此它会通知用户哪些资源(范围)正在尝试访问应用程序,并请求批准。此重定向包含一个 url 回调
- 如果用户批准访问,AS 将浏览器重定向到回调 url,其中包含查询字符串中的一些信息,其中包括一个令牌
- 浏览器检查 url,如果用户批准访问,它使用 url 中的令牌向 Auth 服务器询问 Bearer 令牌
- 如果是 SPA,浏览器会存储不记名令牌并使用它来访问 Web API。如果不是 SPA,token 通常会存储在 cookie 中,这样就不会丢失
处理令牌过期:
令牌有关于过期时间的信息,通常包括一个刷新令牌。您可以使用刷新令牌在过期之前将其呈现给AS,这样您就不需要请求新令牌
配置注意事项
不同的流必须在服务器中以不同的方式进行配置。
“服务器到服务器”的第一个流程使用共享密钥直接将 berare 令牌返回给服务器应用程序。在这种情况下,不需要用户批准,因为此过程中没有用户参与
第二个流程,从(不受信任的)客户端到服务器需要用户的授权,因为您的客户端应用程序将代表他访问用户(资源所有者)的某些资源,因此需要他的批准。
还有其他流程,例如来自受信任的客户端,但它们不适用于这种情况。
所有这些东西的典型实现是dotnetopenauth。它有很好的文档记录,它为您处理所有细节。