具有密码授权的DotNetOpenAuth OAuth 2.0授权服务器

时间:2012-10-10 18:00:27

标签: oauth-2.0 dotnetopenauth

我们希望根据以下角色设置我们自己的OAuth 2.0授权服务器:

  • 资源服务器 - 使用ASP.NET Web API构建的API
  • 客户端 - 使用ASP.NET MVC构建的Web应用程序
  • 资源所有者 - 最终用户

我们计划使用密码授予类型(Resource Owner Password Credentials Grant),以便资源所有者将其凭据提交给客户,客户又将发出授权请求。我们希望使用基本身份验证对客户端请求进行身份验证。

我正在努力解决如何使用支持此授权类型的DNOA设置授权服务器的问题。我已经下载了Authorization Server示例项目,但这似乎是使用基于令牌的授权(用户直接使用授权服务器进行身份验证 - 在示例中,通过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服务,但是我发现有关设置/配置服务器的文档非常稀疏。

1 个答案:

答案 0 :(得分:2)

您似乎将密码授权发送到授权服务器的授权端点,这是错误的。授权应直接转到令牌端点,该端点必须位于授权服务器不需要经过身份验证的访问请求的URL(即不会导致ASP.NET重定向到登录页面)

也就是说,基于Web的客户端应用程序要求用户输入其他Web服务的密码是非常不寻常的(并且气馁)。到目前为止,授权代码流是您所描述的场景的首选流程。