我已经实现了我自己的OAuthAuthorizationServerProvider
和AuthenticationTokenProvider
,一切正常但是我想发送错误消息以及更多细节。
在我的刷新令牌出现问题时,我收到以下JSON对象:{"error":"invalid_grant"}
我想要的是什么样的
{"error":"invalid_grant","reason":"here_goes_my_custom_message"}
。
可以在OAuthAuthorizationServerProvider
(比如GrantResourceOwnerCredentials
方法)中轻松完成,因为参数中的上下文继承自BaseValidatingContext
,因此我可以使用:
if (user == null)
{
context.Rejected();
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}
但是我不知道如何在AuthenticationTokenProvider
中做类似的事情。我有以下方法:
public async Task ReceiveAsync(AuthenticationTokenReceiveContext context)
{
string hashedTokenId = Helper.GetHash(context.Token);
OAuthRefreshToken refreshToken = _oAuthRefreshTokenService.FindRefreshToken(hashedTokenId);
if (refreshToken != null)
{
//Get protectedTicket from refreshToken class
context.DeserializeTicket(refreshToken.ProtectedTicket);
var result = _oAuthRefreshTokenService.RemoveRefreshToken(hashedTokenId);
}
}
编辑: AuthenticationTokenReceiveContext
不是BaseValidatingContext
,因此没有SetError
或Rejected
方法。
我希望在刷新令牌为null
时返回自定义错误消息。知道怎么样?
答案 0 :(得分:0)
作为OP的答案可能会迟到,但我刚刚解决了这个问题,我在这里写下答案,希望其他人能找到答案:
拒绝刷新令牌的方法是来自GrantRefreshToken
的{{1}}。在OAuthAuthorizationServerProvider
AuthenticationTokenProvider
答案 1 :(得分:-3)
要查看JSON对象中的response.data.error
和response.data.error_description
属性,您的代码需要进行细微更改:
if(user == null) {
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}