【发布时间】:2017-01-13 02:51:36
【问题描述】:
我有一个有趣的场景,我需要构建一个具有自定义身份验证的 Web API,由将连接到我的 Web API 服务的客户端指定。 (通常是 Service 定义了合同,但对于这个项目,情况正好相反,很遗憾)。
所以我配置了“标准”OAuthAuthorization,并按照标准 Visual Studio Web API 项目模板工作。
当客户端向 /token 端点发出以下请求时:
curl -X POST "http://localhost:2432/Token" -d "grant_type=password&userName=MyUserName&password=MyPassword"
端点返回以下令牌:
{
"access_token": "the full token is here...",
"token_type": "bearer",
"expires_in": 1209599,
"userName": "MyUserName",
".issued": "Mon, 05 Sep 2016 17:35:08 GMT",
".expires": "Mon, 19 Sep 2016 17:35:08 GMT"
}
现在,我需要更改服务器以便接受以下令牌请求结构:
curl -u "MyUserName:MyPassword" -X GET "http://server/api/token"
并且返回的令牌需要按照以下结构:
{"id":"generated GUID here"}
然后在对服务的后续请求中,GUID 将包含在自定义标头中:
curl -H "X-CrmIService-Token: 在此处生成 GUID" -X GET "http://server/api/protectedResource"
我对必须添加自定义授权过滤器以使用自定义标头授权对受保护资源的请求的概念感到满意。
但我需要有关如何配置和设置授权中间件以使登录请求正常工作的指导。
上面提到的第二种结构的请求失败,服务器返回
{"error":"unsupported_grant_type"}
在遇到我在解决方案中设置的任何断点之前。
请告知我需要如何配置我的授权中间件?
【问题讨论】:
标签: asp.net-web-api oauth