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

How to support multiple external identity providers with an API-only OpenIddict based authorization server?

提问人:Jonny Dee 提问时间:11/18/2023 最后编辑:Jonny Dee 更新时间:11/20/2023 访问量:30

问:

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

我的场景:

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

问题:

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

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

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

C# ASP.NET-核心 ASP.NET-web-API openID-Connect OpenIDdict

评论

0赞 jdweng 11/18/2023
您的链接显示您正在使用 OAUTH2。所以你有一个前端和一个后端。根据请求,服务器上的控制器将连接到 API 端点(如 Google 或 Github)。这些是控制器上的不同路由。这不是 OAUTH2 的授权问题。OAUTH2 是用于建立前端连接(而不是后端)的两步身份验证。首先要在前端发出令牌请求。然后使用令牌在前端建立连接,并指定控制器连接到 Google 或 GitHub 的路由。

答: 暂无答案