AspNet Identity 2:自定义OAuth端点响应

时间:2014-06-06 09:48:54

标签: oauth-2.0 asp.net-identity asp.net-web-api2

我成功实施了自定义OAuthAuthorizationServerProvider。但是当我登录并检索令牌时,我的客户并不知道用户的角色,声明等。

我目前添加了一个webapi控制器来返回主要声明的列表,但我对此并不满意。

请求令牌时,当前响应如下:

{
    access_token: "qefelgrebjhzefilrgo4583535",
    token_type: "bearer",
    expires_in: 59
}

问>如何让它返回类似下面的片段?

{
    access_token: "qefelgrebjhzefilrgo4583535",
    token_type: "bearer",
    expires_in: 59,
    user: {
        name: 'foo',
        role: 'bar'
    }
}

到目前为止我的进展:

OAuthAuthorizationServerProvider#TokenEndpoint(OAuthTokenEndpointContext)的文档说:

  

在成功的令牌端点请求的最后阶段调用。一个应用程序   可以实施此调用以对权利要求进行任何最终修改   用于发出访问权限或刷新令牌。也可以使用此呼叫   为了将额外的响应参数添加到令牌端点的json中   回应机构。

我无法找到如何自定义响应的示例,并且asp-net Identity的源代码尚未发布,所以我很困惑。

2 个答案:

答案 0 :(得分:33)

您可能正在寻找TokenEndpoint的{​​{1}}方法覆盖。

OAuthAuthorizationServerProvider

答案 1 :(得分:0)

我认为您需要覆盖TokenEndpointResponse课程上的OAuthAuthorizationServerProvider

    public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
    {
        context.AdditionalResponseParameters.Add("Key","Value");
        return base.TokenEndpointResponse(context);
    }