我正在尝试使用我的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服务进行身份验证时发送用户密码?
答案 0 :(得分:1)
您要做的事情通常被称为3脚OAUTH。 3条腿是用户的应用程序,服务器和OAUTH服务器。在此用法中,用户从不为您的服务器提供密码。这是OAUTH对更传统的用户名/密码身份验证的一大好处。
执行此操作的模型是cakebaker blog下Creative Commons License无耻地被盗:
这是图示(“消费者”是您的服务器,“服务提供商”是OAUTH服务器):
所以你永远不会看到密码。您需要向OAUTH服务器注册以获取您的消费者密钥/密钥。然后,您需要代表您尝试进行身份验证的用户获取请求令牌。之后,您将用户重定向到OAUTH服务器。当用户返回您的站点时,您可以将请求令牌换成访问令牌(假设用户授予您授权)。当您请求信息时,您可以使用访问令牌向OAUTH服务器进行身份验证(通常是配置文件信息,如电子邮件地址和真实姓名)。