ASP.NET标识 - 令牌

时间:2015-03-05 17:27:02

标签: c# asp.net asp.net-web-api asp.net-identity

我使用的是ASP.NET身份。

我可以轻松发出令牌,但现在我想添加额外的安全性,要求我的客户发送client_idclient_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

1 个答案:

答案 0 :(得分:0)

问题与您在表单中发送clientID有关。

如果使用TryGetFormCredentials而不是TryGetBasicCredentials,则会得到结果。

但是您想使用TryGetBasicCredentials在请求标头中发送您的clientID。 见 https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side