如何使用基于 API 的 OpenIddict 授权服务器支持多个外部身份提供商?

问题描述 投票:0回答:1

我正在尝试实现一个基于 OpenIddict 的授权服务器,它不在本地管理任何用户,并将身份验证委托给一组受支持的外部身份提供商。

我的场景:

用户需要登录(丰富)客户端桌面应用程序。在该应用程序中,用户应该能够选择受支持的身份提供商之一(即 Google、GitHub 等)进行身份验证。授权服务器不应在用户单击某些“通过外部提供商登录”按钮/链接时提供登录网页。相反,用户应该能够单击桌面应用程序中相应的登录按钮,这将触发对授权服务器的相应 API 端点的服务调用。然后,授权服务器应将身份验证委托给用户在桌面应用程序 UI 中选择的外部身份提供者。在客户端计算机上,应打开一个浏览器窗口,用户必须在其中登录。最后,授权服务器应将 OpenID Connect 访问令牌返回给富客户端应用程序,然后使用该令牌来调用后端服务。

问题:

我查看了几篇博客文章以及 openiddict-samples 存储库中提供的项目。然而,它们没有展示如何处理多个外部身份提供商,并且它们通常在授权服务器组件内有一些服务器端 Web 应用程序。但是,在我的场景中,授权服务器应该只提供 API 端点,而不提供 Web UI。我设法将用户选择的身份提供程序类型与授权请求一起传递到服务器的“授权”API 端点,但我不知道如何让服务器利用此信息将用户重定向到正确的身份提供程序的登录名页。谁能向我展示授权 API 端点的代码示例,其中显示如何使用相应的身份提供者端点对用户进行身份验证,或者向我指出实现类似场景的资源?

更新:让我重新表述一下我的问题:

需要在 Mimban 示例应用程序中修改哪些内容才能支持更多外部提供商? (客户端将通过其身份验证请求中的 URI 查询参数指定要用于身份验证的身份提供者。)

c# asp.net-core asp.net-web-api openid-connect openiddict
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.