我很难找到我必须使用的场景DotNetOpenAuth
和我必须处理的特定流程的答案。
在下图中,我同时控制 MVC 站点和 API。API 既是我的授权服务器,也是我的资源服务器。
用户名和密码流程
在用户在我的系统上创建本地帐户的情况下,该过程相当明显,因为我正在处理用户名和密码凭据以将它们登录到站点,然后我可以将其传递到我的令牌端点并随后传递到HandleTokenRequest
我的授权服务器,以便为我的客户端获取访问令牌和刷新令牌,然后开始访问资源。
OpenID 流程
我目前不知所措的流程是,如果用户决定使用他们的 Google 凭据登录我的网站(例如)。在这种情况下,我如何在我的 API 中从我自己的授权服务器授予他们访问令牌和刷新令牌?
我将在对我的 API 令牌端点的请求中包含什么?
我编写了自己的 API 客户端,它继承自作为库WebServerClient
一部分的类。DotNetOpenAuth
我已经看到提供了一个用于处理令牌的接口,IServiceProviderTokenManager
但它似乎在 OpenID 提供程序场景中使用,而不是在像我这样的 API 客户端实现中使用,所以我假设我需要编写一个自定义类来存储和检索我的在客户端拥有自己的 API 令牌,但也希望得到确认?
值得一提的是,网站和 API 都可以完全访问同一个安全数据库,但只有 API 可以访问保存任何资源的数据库。