使用DotNetOpenAuth,我们已在授权服务器上成功实施了多种标准OAuth 2.0授权类型。
我们现在想要实现自定义grant_type
,最好不要修改DotNetOpenAuth源本身。
我可以像这样手动处理它:
public async Task<ActionResult> Token()
{
if (Request["grant_type"] == "my_custom_grant")
{
if(InvalidClientCredentials)
return ErrorJson();
var user = FindUserWithSpecialCode(Request["special_code"]);
if (client.IsAlreadyAuthorizedForUser(user))
return Json(new { access_token = "", token_type = "bearer", expires_in = 1800 });
else
return ErrorJson();
}
HttpResponseMessage response = await AuthorizationServer.HandleTokenRequestAsync(Request, Response.ClientDisconnectedToken);
return response.AsActionResultMvc5();
}
但它有点hacky而且我担心安全问题。
我见过其他OAuth库支持自定义授权类型,但DotNetOpenAuth可以实现吗?