如何在 Python 中实现基于本机浏览器的 OpenID Connect 身份验证?

How to implement native browser based OpenID Connect authentication in Python?

我正在 Python 中编写控制台应用程序,它必须使用基于 OpenID Connect 的身份验证与网络服务通信。

该工具的用户通常已经使用他们最喜欢的浏览器登录。

如何从 Python 打开/调用本机浏览器,以便我可以 return 访问令牌?

由于 IT 为大多数用户配置的个人防火墙,打开通过重定向 URI 获取请求的 http 服务器不起作用。

webbrowser.open 似乎无法提供 return 数据。

https://docs.microsoft.com/en-us/windows/uwp/security/web-authentication-broker 似乎不是我的应用程序的工作解决方案,因为它不是在 Microsoft Store 中注册的 Windows 应用程序,而是内部工具。

您可以假设所有用户都使用最近的 Windows 个客户端。

控制台应用根据 RFC8252 使用桌面 OAuth,这些是来自浏览器的登录 return 选项:

  • 环回
  • 私有 URI 方案

后者可能适用于您的用例,其中重定向 URI 具有这种形式。该方案是为当前用户注册的,不需要管理员权限:

x-mycompany-myapp:/回调

你可以运行我的Desktop Code Sample to see how this looks. You can test whether this works for users via a web page like this

我不是 Python 方面的专家,但 Python online tutorials available on this topic