IdentityServer4 Fedarated网关资源所有者设置

问题描述:

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

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

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

问题:

我怎样才能实现两个ID4实例(授权+认证)之间的 “密码流”?

在此先感谢!

虽然我原来的答案奏效,但这并不是实现我最终结果的最佳方式。我可以通过扩展IResourceOwnerPasswordValidator来注入我自己的密码授权处理,而不是创建新的端点。然后我可以为所有授权拥有一个端点。这个解决方案更“自然”,并与预期的架构保持一致。

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

公共任务ValidateAsync(ResourceOwnerPasswordValidationContext上下文)

一个更优雅的解决方案。

经过大量的研究和小小的指导之后,我决定采取一个跳跃,并创建一个仅用于资源所有者/密码授予类型的新API端点。这个API只是验证所需的信息是授予类型,秘密,用户/ pwd等等,然后将它中继到Authentication实例。这样做可能会有更多“优雅”的方式,但是这似乎是有效的。

希望这可能有助于某人。