我使用的是ASP.NET身份。
我可以轻松发出令牌,但现在我想添加额外的安全性,要求我的客户发送client_id
和client_secret
。
所以我凌驾于OAuthAutorizationProvider
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
string clientId;
string clientSecret;
if (context.TryGetBasicCredentials(out clientId, out clientSecret))
{
//My code here
}
context.Validated();
}
问题是我无法从TryGetBasicCredentials
获得clientId和ClientSecret,结果总是false
。
也许我错过了什么......
POST http://localhost:1323/token
Host: localhost:1673
Content-Length: 102
Content-Type: x-www-form-urlencoded
grant_type=password&username=foo&password=123456&client_id=123&client_secret=guess
答案 0 :(得分:0)
问题与您在表单中发送clientID有关。
如果使用TryGetFormCredentials而不是TryGetBasicCredentials,则会得到结果。
但是您想使用TryGetBasicCredentials在请求标头中发送您的clientID。 见 https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side