【问题标题】:When to send user password when authenticating via oAuth?通过 oAuth 进行身份验证时何时发送用户密码?
【发布时间】:2015-05-20 01:36:56
【问题描述】:

我正在尝试使用我的 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 服务进行身份验证时何时发送用户密码?

【问题讨论】:

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


    【解决方案1】:

    您尝试执行的操作通常称为 3-legged OAUTH。 3 个分支是用户的应用程序、您的服务器和 OAUTH 服务器。在这种用法中,用户 从不 向您的服务器提供他们的密码。这是 OAUTH 相对于更传统的用户名/密码身份验证的一大优势。

    这样做的模型是(无耻地从cakebaker blog 偷来Creative Commons License):

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

    如下图所示(“消费者”是您的服务器,“服务提供商”是 OAUTH 服务器):

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

    【讨论】:

    • 虽然无耻地被盗了 ;) 这是很棒的东西 :) 我一直在 VB.NET 上搜索 3-legged oAuth 示例,但找不到任何有用的东西。因此,对于我的信息,如果您查看我的示例链接cleancode.co.nz/blog/523/oauth-dot-net,它并没有谈论 3-legged oAuth...我正在考虑使用“服务示例 2”段落中提到的代码。这在这种三足场景中是否可行?谢谢!
    • 我现在正在阅读:stackoverflow.com/questions/7296729/… 所以我正在尝试开发 Android/iOS 和 Windows Phone 应用程序,但看起来我什至不需要像 oAuth 这样的东西来支持我的本机应用程序登录?只是一个基于 SSL 的带有 post 请求的 Web 服务?
    • 如果您拥有密码,那么您可以进行本机身份验证。它需要使用现有登录名在您的网站上注册,但可能适合您的应用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2013-10-15
    • 1970-01-01
    • 2012-11-15
    • 2013-03-19
    相关资源
    最近更新 更多