DotNetOpenAuth OAuth 2.0授权服务器使用密码授权

6
我们想要建立一个基于以下角色的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服务,但是我发现设置/配置服务器的文档相当稀少。


2
我目前正在经历同样的过程,这需要很长时间才能使其正常工作。DNOA提供的一些示例是错误的,并且编码后无法正常工作。我目前正在尝试弄清楚如何授权客户端以及用户。目前我被卡住了,因为似乎需要clientidentifier的方法从未被提供。 - Jammer
Jammer,我想了解更多关于“just plain wrong”示例的信息。你能否发送反馈到dotnetopenid@googlegroups.com邮箱? - Andrew Arnott
1个回答

2
看起来您正在将密码授权发送到授权服务器的授权端点,这是错误的。授权应直接发送到令牌端点,该端点必须位于授权服务器不需要经过身份验证即可访问的URL上(即不会导致ASP.NET重定向到登录页面)。
话虽如此,对于基于Web的客户端应用程序要求用户输入另一个Web服务的密码非常不寻常(并且不建议)。在您所描述的场景中,授权代码流程绝对是首选。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接