【发布时间】:2019-09-21 01:03:59
【问题描述】:
我想为我的本地 Windows 和 Linux 桌面应用程序使用 OpenID Connect 来验证我的用户。
如"OAuth 2.0 for Native Apps" Section 7.3 中所述,我想从身份验证服务器打开一个本地 TCP 端口重定向以获取授权码。我认为对于适用于 Windows 和 Linux 的本机应用程序没有其他选择。
所以流程是这样的:
- 原生应用启动并显示登录按钮
- 按下登录按钮时
- 原生应用打开一个临时的本地端口
- 浏览器打开并显示身份验证提供程序的登录页面(连同客户端 ID 和密码、重定向 URI 和范围 openid、response_type=code 一起发送)
- 在浏览器中成功验证用户后
- 身份验证提供程序重定向到重定向 URI,即本地开放端口
- 本地端口应该向用户显示类似“立即关闭浏览器并返回应用程序”的内容
- 本机应用程序从重定向获取代码并关闭端口
- 本机应用程序要求令牌端点使用代码获取身份令牌
- 使用签名验证身份令牌
- 将能够从该身份令牌中获取用户的详细信息
我现在的问题是我需要 PKCE 吗?我发现 this article 指出它不会带来任何额外的安全性,除了确保同一设备上的另一个应用程序注册相同 @ 987654323@.
我的计划是否存在任何其他方面的缺陷或需要进一步改进?我了解客户端 ID 和机密可以被视为“公开”,因为它们随软件一起提供并且可以被逆向工程。但是我的软件将不会在公共网页上(希望如此)提供,并且只会提供给受信任的客户(他们都有不同的客户端 ID 和机密)。
【问题讨论】:
标签: authentication openid-connect nativeapplication pkce