6

我们要基于以下角色建立自己的 OAuth 2.0 授权服务器:

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

我们计划使用密码授予类型(资源所有者密码凭据授予),以便资源所有者将他们的凭据提交给客户端,然后客户端将发出授权请求。我们想使用基本身份验证来验证客户端请求。

我正在努力解决如何使用支持此授权类型的 DNOA 设置授权服务器。我已经下载了授权服务器示例项目,但这似乎是使用基于令牌的授权(用户直接使用授权服务器进行身份验证 - 在示例中,通过 OpenID)。

当我尝试使用提琴手发出授权请求时,我只是被重定向到登录页面,所以我假设这个示例不支持这种授权类型:

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 服务,但我发现有关设置/配置服务器的文档非常少。

4

1 回答 1

2

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

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

于 2012-12-29T05:08:53.627 回答