在 ASP.NET 身份中添加新的 grant_type?

Adding a new grant_type in ASP.NET Identity?

我在 Web API 2 项目中使用 ASP.NET Identity。我目前已经准备就绪,运行 可以使用以下示例使用用户名和密码进行身份验证:

grant_type=password&username=alice%40example.com&password=Password1!

这工作正常。

现在,我的服务可以从移动应用程序调用,我想为用户提供能够使用密码登录的选项。我向用户添加了两个额外的字段(密码和设备 ID)table 并扩展了 UserStore 以便能够根据此信息检索用户。

我的问题是如何允许用户提供密码?我需要他们能够使用密码或密码登录,所以我正在考虑发送以下密码:

grant_type=passcode&username=alice%40example.com&passcode=1234&deviceid=abcdef

并且根据 grant_type 我可以通过密码或密码查询用户存储。然而,这会引发错误 (unsupported_grant_type) 并且快速搜索看起来这些是预定义值,所以我无法添加新值?

我可以添加一个新的 grant_type 还是我必须坚持使用 password 并在 post 数据中有一个额外的字段来说明它是否是密码?

谢谢

添加另一个 grant_type 似乎不是主要问题。但是有:合规性。每个 OAuth 端点都有一组特定的允许 grant_type。如果你再添加一个,你实际上是在绕过标准,这将导致其他人在实施它时出现问题。