带密码授权的 DotNetOpenAuth OAuth 2.0 授权服务器
Posted
技术标签:
【中文标题】带密码授权的 DotNetOpenAuth OAuth 2.0 授权服务器【英文标题】:DotNetOpenAuth OAuth 2.0 Authorization Server with Password grant 【发布时间】:2012-10-01 06:54:23 【问题描述】:我们想根据以下角色建立自己的 OAuth 2.0 授权服务器:
资源服务器 - 使用 ASP.NET Web API 构建的 API 客户端 - 使用 ASP.NET MVC 构建的 Web 应用程序 资源所有者 - 最终用户我们计划使用密码授予类型 (Resource Owner Password Credentials Grant),以便资源所有者将其凭据提交给客户,客户反过来会提出授权请求。我们希望使用基本身份验证对客户端请求进行身份验证。
我正在努力解决如何使用支持此授权类型的 DNOA 设置授权服务器。我已经下载了授权服务器示例项目,但这似乎是使用基于令牌的授权(用户直接使用授权服务器进行身份验证 - 在示例中,通过 OpenID)。
当我尝试使用 fiddler 发出授权请求时,我只是被重定向到登录页面,因此我假设此示例不支持此授权类型:
POST http://localhost:50172/oauth/authorize HTTP/1.1
User-Agent: Fiddler
Host: localhost:50172
Content-Length: 103
grant_type=password&client_id=sampleconsumer&client_secret=samplesecret&username=user&password=password
如果我使用基本身份验证也是如此。
任何帮助将不胜感激。我过去曾成功使用 DNOA 来使用 OAuth 服务,但我发现有关设置/配置服务器的文档非常少。
【问题讨论】:
我目前正在经历相同的过程,并且需要很长时间才能使其正常工作。 DNOA 提供的一些样本是完全错误的,不能按编码工作。我目前正在尝试弄清楚如何授权客户和用户。我现在很难过,因为从来没有将 clientidentifier 提供给似乎需要它的方法。 干扰器,我想了解更多关于“完全错误”的样本。您能否通过电子邮件将反馈发送至 dotnetopenid@googlegroups.com? 【参考方案1】:您似乎将密码授权发送到授权服务器的授权端点,这是错误的。授权应直接发送到 token 端点,该端点必须位于授权服务器不需要经过身份验证的请求即可访问的 URL(即不会导致 ASP.NET 重定向到登录页面) .
也就是说,基于 Web 的客户端应用程序要求用户输入另一个 Web 服务的密码是非常不寻常的(并且不鼓励)。到目前为止,授权代码流是您所描述的场景的首选。
【讨论】:
以上是关于带密码授权的 DotNetOpenAuth OAuth 2.0 授权服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何在客户端获取 DotNetOpenAuth.OAuth2 返回的错误消息?
DotNetOpenAuth 和 ResourceServer 服务 https 配置