我成功实现了我的自定义OAuthAuthorizationServerProvider
。但是当我登录并检索令牌时,我的客户机不知道用户的角色、声明等。
我目前添加了一个webapi控制器来返回主体的声明列表,但我对此并不满意。
请求令牌时,当前响应看起来像:
{
access_token: "qefelgrebjhzefilrgo4583535",
token_type: "bearer",
expires_in: 59
}
Q>如何使它返回如下代码片段?
{
access_token: "qefelgrebjhzefilrgo4583535",
token_type: "bearer",
expires_in: 59,
user: {
name: 'foo',
role: 'bar'
}
}
我的进度:
OAuthAuthorizationServerProvider#TokenEndpoint(OAuthTokenEndpointContext)
的文档说:
在成功的令牌端点请求的最后阶段调用。一个应用程序是否可以执行此调用,以便对索赔进行任何最终修改用于发出访问令牌或刷新令牌。这个调用也可以使用以便向Token端点的json中添加额外的响应参数身体反应。
我找不到任何关于如何定制响应的例子,而且asp.net Identity的源代码还没有发布,所以我很困。
可能您正在寻找TokenEndpoint
方法覆盖OAuthAuthorizationServerProvider
。
public override Task TokenEndpoint(OAuthTokenEndpointContext context)
{
foreach (KeyValuePair<string, string> property in context.Properties.Dictionary)
{
context.AdditionalResponseParameters.Add(property.Key, property.Value);
}
return Task.FromResult<object>(null);
}
我认为你需要在OAuthAuthorizationServerProvider
类上覆盖TokenEndpointResponse
:
public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
{
context.AdditionalResponseParameters.Add("Key","Value");
return base.TokenEndpointResponse(context);
}