何时通过oAuth进行身份验证时发送用户密码?

时间:2015-05-19 15:50:17

标签: vb.net rest authentication iis oauth-2.0

我正在尝试使用我的REST服务,通过VB.NET中的.svc文件实现oAuth服务

我正在使用示例代码查看此帖子:http://www.cleancode.co.nz/blog/523/oauth-dot-net 以及oAuth的这种直观解释:https://www.drupal.org/node/349516

第一篇文章提及The authentication is actually done in OAuthAuthorizationManager 但是,当我检查OAuthAuthorizationManager课程时,我看不到用户将提供密码的位置。

我认为在某个地方我必须检查用户的用户名/密码是否正确,但我没有看到第一篇文章的代码或第二篇文章的流程图,其中以及用户如何提供密码。

在某些时候我想象密码必须通过线路发送,我会说这是通过SSL的明文,但是这个密码何时发送?

我现在有了这个规则设置,其中密码将作为查询字符串参数发送,但我不确定这是否正确:

<rule name="oauth login">
  <match url="^api/login/([0-9a-zA-Z@.]+)$"/>
  <action type="Rewrite" url="myapi.svc/login/?username={R:1}" appendQueryString="true" />
</rule>

所以我的问题:何时在针对我的REST服务进行身份验证时发送用户密码?

1 个答案:

答案 0 :(得分:1)

您要做的事情通常被称为3脚OAUTH。 3条腿是用户的应用程序,服务器和OAUTH服务器。在此用法中,用户从不为您的服务器提供密码。这是OAUTH对更传统的用户名/密码身份验证的一大好处。

执行此操作的模型是cakebaker blogCreative Commons License无耻地被盗:

  • 客户端(这是OAUTH客户端,即:您的服务器)已经注册到服务器(这是OAUTH服务器)并提前获得了他的客户端凭据(也称为“消费者密钥和密钥”)
  • 用户希望客户端访问服务器上受保护的资源
  • 客户端从服务器
  • 检索临时凭证(也称为“请求令牌”)
  • 客户端将资源所有者重定向到服务器
  • 资源所有者授予客户端对服务器上受保护资源的访问权
  • 服务器将用户重定向回客户端
  • 客户端使用临时凭证从服务器
  • 检索令牌凭据(也称为“访问令牌”)
  • 客户端使用令牌凭据访问服务器上的受保护资源

这是图示(“消费者”是您的服务器,“服务提供商”是OAUTH服务器): Sequence diagram for 3-legged OAUTH

所以你永远不会看到密码。您需要向OAUTH服务器注册以获取您的消费者密钥/密钥。然后,您需要代表您尝试进行身份验证的用户获取请求令牌。之后,您将用户重定向到OAUTH服务器。当用户返回您的站点时,您可以将请求令牌换成访问令牌(假设用户授予您授权)。当您请求信息时,您可以使用访问令牌向OAUTH服务器进行身份验证(通常是配置文件信息,如电子邮件地址和真实姓名)。