asp.net Identity 2:自定义OAuth端点响应



我成功实现了我的自定义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);
    }

最新更新