我们希望根据以下角色设置我们自己的OAuth 2.0授权服务器:
我们计划使用密码授予类型(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服务,但是我发现有关设置/配置服务器的文档非常稀疏。
答案 0 :(得分:2)
您似乎将密码授权发送到授权服务器的授权端点,这是错误的。授权应直接转到令牌端点,该端点必须位于授权服务器不需要经过身份验证的访问请求的URL(即不会导致ASP.NET重定向到登录页面)
也就是说,基于Web的客户端应用程序要求用户输入其他Web服务的密码是非常不寻常的(并且气馁)。到目前为止,授权代码流是您所描述的场景的首选流程。