IdentityServer4 联合网关资源所有者设置

IdentityServer4 Fedarated Gateway Resource Owner Setup

我们正在尝试将授权和身份验证拆分为两个单独的服务。两者都将使用 Identity Server 4。我们可能有一天会添加额外的外部身份验证提供程序。我相信联合网关是术语 (http://docs.identityserver.io/en/release/topics/federation_gateway.html?highlight=Federation)

到目前为止,我的研究表明我们能够将授权设置为外部提供商并将 [LocalLoginEnabled] 设置为 false。这适用于网络应用程序,因为它沿着传统流程重定向。我们的要求是让基于 Web 的应用程序和客户端应用程序(Windows 和移动)调用我们的解决方案。这将需要隐式或资源所有者(密码)流程。

正在寻找有关最佳设置方法的指导。我很想编写一个自定义端点 API 以将身份验证中继到身份验证实例。

问题:

如何在两个 ID4 实例(授权 + 身份验证)之间实现 "password flow"?

提前致谢!

经过大量研究和少量指导后,我决定迈出一大步,刚刚创建了一个新的 API 端点,仅用于资源所有者/密码授权类型。此 API 只是验证必要的信息是否存在授权类型、秘密、user/pwd 等...,然后将其中继到身份验证实例。可能有更多 "elegant" 方法可以做到这一点,但这个似乎有效。

希望这可能对某人有所帮助。

虽然我原来的答案有效,但这并不是实现最终结果的最佳方式。我可以通过扩展 IResourceOwnerPasswordValidator 来注入我自己的密码授权处理,而不是创建新端点。然后,我可以拥有一个用于所有授权的端点。此解决方案更 "natural" 并且符合预期的体系结构。

IResourceOwnerValidator 接口只实现了一个功能...

public 任务 ValidateAsync(ResourceOwnerPasswordValidationContext 上下文)

一个更优雅的解决方案。