在 ASP.NET WebApi 中更改 HTTP 响应

Change HTTP response in ASP.NET WebApi

我正在尝试使用 ASP.NET WebApi 实现用于发布 Web 令牌的服务器。我找到了有关如何逐步执行此操作的精彩教程,并且一切正常,只是我需要更改 HTTP 响应中的一些值。

这是一张检查用户凭据的调用图片,如果用户存在于数据库中,他将获得令牌,如果不存在,他将获得 HTTP 401 错误。

这里还有更近的响应主体图片,因为它在上一张图片上太小了:

我的问题是:是否有机会将返回的 JSON 中的 access_token 属性 的名称更改为 auth_token。我需要使用不同的名称,因为稍后在项目中我将有一个令牌,它的名称也必须是 access_token。 我的第二个问题是:我可以更改 .issued 和 .expires 属性的日期格式吗?例如 yyyy-MM-dd?

我用过这个教程http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/

所以代码是完全一样的。我正在尝试使用调试器跟踪响应的创建,但我不清楚它可能在哪里。我猜它在 SimpleAuthorizationServerProvider class 内部,但我无法在项目的任何地方找到此属性的显式设置,所以我猜该响应会自动创建。

虽然更改标准令牌响应参数的名称或格式绝对不是一个好主意,但这里有一个方法可以做到:

基本上,您必须使用 TokenEndpointResponse 通知并提供您自己的 JSON 负载。可悲的是,有一个错误阻止它与 Katana 3 中内置的 OAuth2 授权服务器一起工作。你可以看看我与@manfredsteyer 开发的一个分支;它包括一个允许这种情况的修复程序:https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/tree/dev