【问题标题】:Is it possible to perform authentication with known user and password?是否可以使用已知用户和密码执行身份验证?
【发布时间】:2019-01-07 02:59:44
【问题描述】:
给定一个有效的用户名和密码,我是否可以使用 OAuth、OAuth2 或 OpenId?
我需要调用身份验证服务器来了解用户和密码是否有效。
更新
其实我找到了一个document,说明OAuth2支持这种机制:
尽管如此,OAuth2 也支持用户告诉
客户的用户名和密码。在这种情况下,客户
传输此信息以及客户 ID 和客户
授权服务器的秘密和所需范围,然后
无需再次调用即可直接获取所需令牌。
那么,下一个问题是,请您提供一个可行的示例吗?
【问题讨论】:
标签:
c#
.net
oauth
openid
oauth-2.0
【解决方案1】:
OAuth 2.0 规范定义了几个不同的用例或工作流,针对不同类型的应用程序或授权场景。
授权工作流之一,也是最常与 Oauth 关联的一种,是当客户端应用程序请求访问受保护资源但未直接获取最终用户的凭据时 - 访问请求重定向以向最终用户呈现登录屏幕属于授权系统,不属于客户端应用程序。当用户提供凭据并同意允许客户端应用程序的访问请求时,授权服务器会向客户端应用程序返回一个授权代码,客户端应用程序可以使用该代码获取访问令牌以访问最终用户的受保护资源。
这称为授权码授予,在 OAuth2 规范的第 4.1 节中有详细说明。
还有另一个授权工作流程,其中客户端应用确实拥有用户凭据或其他某种形式的共享机密。客户端应用程序在请求访问令牌时包含用户凭据或共享密钥。这称为客户端凭据授予,在section 4.4 of the Oauth2 spec 中有详细说明。
客户端凭据授予可能最接近您的方案。