IdentityServer4 - connect/token 端点 - 更改散列类型

IdentityServer4 - connect/token endpoint - Change Hashing Type

我一直试图找出 IdentityServer4 上“connect/token”端点的代码在哪里。 找不到它是不可能的,我现在开始相信这是某种内置的 controller/endpoint 代码无法编辑,就像其他端点一样......我说得对吗?

真正的问题是:我需要更改此端点验证提供的凭据的方式。

IdentityServer 对用户密码使用哈希算法,但我想知道是否可以更改正在使用的算法 - 或者创建类似的端点或验证方法但使用另一种哈希算法。

我正在考虑这种方法,因为我已经从其他来源迁移了一些用户帐户,并且存储在数据库中的散列密码没有使用 IdentityServer 算法。

欢迎评论,即使你没有具体的答案,也许我们可以得出其他结论。

提前致谢!

PS:我正在使用 ROPC 授权类型(又名密码授权类型)。


编辑:因为这个场景是临时的 - 每当用户登录时,旧哈希(源应用程序)的密码将迁移到新哈希(IdentityServer) - 我正在考虑开发一个端点来使用同时使用 'old' 哈希验证凭据并在那里生成令牌,此时不使用 'connect/token' 端点。我不确定如何生成令牌,但我会深入研究它。

IdentityServer 本身不关心用户或密码,而是在您自己的用户界面中处理,如下图所示:

AccountController class 告诉 IdentityServer 用户已经通过身份验证。

在典型的设置中,您使用 QuickStart UI 来处理 login/signup 逻辑,因此,您可以在那里自定义用户密码的存储方式。处理用户的常用方法是涉及来自 ASP.NET Identity 的逻辑,但这不是必需的。

如果您正在使用 客户端凭证流 ,那么您所要做的就是实现您自己的 IClientStore 接口.您可以找到示例实现 here。不要忘记在startup.cs

中注册

我最终创建了一个新端点,以自定义方式验证凭据,并借助于此创建了一个模拟令牌:

这不是完美的解决方案,但它确实符合我的需求。