oauth-2.0 - 没有 OIDC 的 OAuth2.0(普通 OAuth2.0)
问题描述
据我了解,我们可以使用不同帐户登录的应用程序使用 OpenID Connect(OAuth2.0 的配置文件)。
OAuth 用于授权,OIDC 用于身份验证(它具有 ID 令牌-用户信息端点)。
那么,在 OIDC 之前是否无法使用 OAuth 从另一个应用程序帐户登录到应用程序?(如果可能,怎么做?)
如果普通 OAuth 不能用于身份验证,它是/曾经用于什么?
我的意思是它与“授权”到底有什么关系?
它通过访问令牌从资源服务中得到什么?
解决方案
我一直觉得这方面的行话没有帮助,所以我理解你的困惑。这是一个简单的英文摘要:
OAuth 2.0
在 OIDC 应用程序使用 OAuth 2.0 获取令牌之前,这涉及到可选的用户同意。获得代币的过程被称为“委托”。
实际上,尽管所有现实世界的 OAuth 2.0 提供商也包括身份验证,以确保他们的系统安全。OAuth 规范中没有定义如何进行身份验证。
OAuth 主要是关于保护数据,其中范围和声明是机制。这些链接提供了更多信息:
国际数据中心
这只是围绕身份验证前后的身份验证消息应该如何工作添加了一些更清晰的定义:
- 客户端只包含一个
openid
使用 OpenID Connect 的范围 prompt=login
客户端可以通过参数在重定向期间强制登录- 客户端可以通过
acr_values
参数请求认证方法 - 身份验证完成后,客户端会收到一个 ID 令牌(断言),如果需要,可以对其进行数字验证,然后使用其中的信息(例如用户名)
OIDC 仍然没有定义实际身份验证的工作方式。
一起使用它们
如今,几乎所有 OAuth 安全应用程序(和库)都同时使用,因此身份验证和委托都使用基于标准的解决方案。它为您提供了最好的应用程序功能和设计模式,以做好安全工作。
推荐阅读
- mysql - 每个客户订购的产品总数
- javascript - 是否可以在前端用 JavaScript 加载整个被拖放的视频?
- google-app-engine - 使用 gcloud 部署到自定义域
- ios - Swift 多个上传文件或图像
- python - 在 javascript 中实例化 QWebChannel 对象时的警告
- c# - 在一个键上加入两个列表,并用 CROSS 总结总数?
- android - 多个导航主机基础布局
- angular - 进行 HTTP POST 调用时出现 500(内部服务器错误)
- movesense - Movesense HelloWorld 订阅
- node.js - 在 Bot Builder 中从 URL 解析 XML 数据