Oauth 2.0 我的OAuth2客户端是否也可以发出自己的访问令牌?

Oauth 2.0 我的OAuth2客户端是否也可以发出自己的访问令牌?,oauth-2.0,Oauth 2.0,我们的应用程序已经是一个委托给多个授权服务器的客户端。关键是我们有用户帐户,但不存储任何凭据。我们的用户通过Facebook/Google/etc认证,他们的本地帐户是自动创建的 现在,随着该应用程序的发展,其他应用程序希望与我们的API集成,因此我们希望提供我们自己的OAuth2端点。我们正在实现一个成熟的OAuth2服务器,将该部分委托给Facebook/Google/whatnot,并作为一个普通服务器工作(发送我们自己的访问令牌、刷新令牌等)。这是人们期待的事情吗?标准中是否有特定于此用

我们的应用程序已经是一个委托给多个授权服务器的客户端。关键是我们有用户帐户,但不存储任何凭据。我们的用户通过Facebook/Google/etc认证,他们的本地帐户是自动创建的


现在,随着该应用程序的发展,其他应用程序希望与我们的API集成,因此我们希望提供我们自己的OAuth2端点。我们正在实现一个成熟的OAuth2服务器,将该部分委托给Facebook/Google/whatnot,并作为一个普通服务器工作(发送我们自己的访问令牌、刷新令牌等)。这是人们期待的事情吗?标准中是否有特定于此用例的内容?

您的方法是正常的。现在,您实现了资源服务器,而Google等是授权服务器。您正计划实施一个新的授权服务器。从逻辑上讲,这将与资源服务器完全不同,即使它可能位于同一物理服务器上

但是,实现授权服务器相对比较复杂,因为它旨在支持多个独立的客户端。如果您不想支持其他第三方客户端,您可以为自己的身份验证选择一个更简单的成员资格提供程序类型模型,并为外部身份验证提供程序保留OAuth部分。也就是说,只需在应用程序中有一个登录页面,在数据库中保留用户名和哈希凭证,并使用应用程序会话。提供一些UI,让用户在使用您的会员资格提供商“本机”登录或使用外部提供商登录之间进行选择


很多网站都采用这种双重方式(例如StackOverflow本身——你可以使用Facebook或SO帐户登录)。这将比成熟的OAuth 2授权服务器省力。

是的,我们一直在这样做,直到第三方开始要求使用我们的API集成他们的系统。这需要我们多走一英里,才能成为OAuth提供商。祝你好运!现在已经开始有一些不错的产品可供开发(例如,如果您在.Net上,ThinkTexture IdentityServer)