我正在尝试验证ValidateClientAuthentication函数中的客户端ID。我正在使用grant_type =密码流。以下是我在auth令牌请求体中传递client_id的方法。
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=user1@test.com&password=pwduser1&client_id=B36B-07DEAC802BEA
当我尝试访问ClientId以验证客户端ID时,它始终为null。
if (context.ClientId != null)
{
//Set the client who initiated request is valid
context.Validated();
}
else
{
//reject access to application
context.Rejected();
context.SetError("Invalid client_id", "Client_id must present in the request header");
}
当grant_type = password?
时,将客户端ID传递给令牌端点的正确方法是什么?感谢您的帮助。
答案 0 :(得分:15)
如果您的client_id
作为表单参数传递,那么您必须通过执行context.TryGetFormCredentials(out clientId, out clientSecret);
如果您的client_id
作为Authorization
标头传递,则可以通过执行context.TryGetBasicCredentials(out clientId, out clientSecret);
一旦您从请求中获得了client_id
,请执行context.Validated(clientId)
,这将设置您的context.ClientId
属性,此属性将始终为空,直到您获得完成context.Validated()