OAuth术语已经困扰我很久了。OAuth授权是像一些人建议的那样,还是认证?
如果我错了,请纠正我,但我一直认为授权是允许某人访问某个资源的行为,而OAuth似乎没有任何实际允许用户访问给定资源的实现。OAuth实现所讨论的都是为用户提供一个令牌(签名的,有时是加密的)。然后,每次调用都会将该令牌传递到后端服务endpoint,在后端服务endpoint上检查该令牌的有效性,这也不是OAuth的问题。
我认为OAuth身份验证(每篇文章都说不是)需要用户提供凭证,从而证明用户应该/不应该有访问权限吗?
因此,OAuth似乎不是授权或身份验证,因为这些必须由其他进程执行。那到底是什么?这是一个通信令牌的过程吗?真的没有具体含义的绒毛词吗?
要问一个关于这个主题的问题很难不让人觉得神秘和迷信(鬼怪和地精),所以我想回答这个问题也不是一件简单的事情。请自行承担风险。
OAuth2.0是授权规范,但不是身份验证规范。RFC 6749,3.1。授权endpoint明确说明如下:
授权endpoint用于与资源所有者交互并获得授权授予。授权服务器必须首先验证资源所有者的身份。授权服务器验证资源所有者的方式(例如用户名和密码登录、会话cookie)超出了本规范的范围。
身份验证处理关于“一个人是谁”的信息。授权处理关于“谁向谁授予什么权限”的信息。授权流包含身份验证作为其第一步。这就是人们经常困惑的原因。
有许多库和服务使用OAuth 2.0进行身份验证。它通常被称为“社交登录”,它使人们更加困惑。如果您看到“OAuth身份验证”(而不是“OAuth授权”),那么它是一个使用OAuth进行身份验证的解决方案。
OpenID 1.0和OpenID 2.0是用于身份验证的旧规范。那些制定规范的人希望人们使用OpenID进行身份验证。然而,一些人开始使用OAuth 2.0进行身份验证(而不是授权),OAuth身份验证迅速盛行。
从OpenID的角度来看,基于OAuth的身份验证不够安全,但他们不得不承认人们更喜欢OAuth身份验证。因此,OpenID人员决定在OAuth 2.0的基础上定义一个新规范OpenID Connect。
是的,这让人们更加困惑。
OAuth 2.0是一个框架,服务的用户可以允许第三方应用程序访问他/她托管在服务中的数据,而不会泄露他/她的凭据(ID
OpenID Connect是OAuth 2.0之上的一个框架,第三方应用程序可以获取由服务管理的用户身份信息。
(对不起,这些定义摘自我的公司概览页面)
身份验证是确定最终用户主体(=唯一标识符)的过程。确定主题的方法有很多。ID
授权是将主题与请求的权限以及请求权限的客户端应用程序相关联的过程。访问令牌表示关联。
我一直在努力用Spring-Security正确地实现Stomp(websocket)身份验证和授权。对于后人,我将回答我自己的问题,以提供一个指导。 Spring WebSocket文档(用于身份验证)看起来不清楚ATM(IMHO)。我无法理解如何正确处理身份验证和授权。 null 在HTTP协商endpoint上进行身份验证(因为大多数JavaScript库不会随HTTP协商调用一起发送身份验
我有一个已经完成的j2ee(jsf、cdi、jpa)应用程序,它完美地使用了ApacheShiro,它工作得非常好,我喜欢Shiro注释(hasRole、hasPermission等)。 现在,该项目还必须能够通过SiteMinder进行身份验证,我的问题是: 我如何设置一个领域来处理SiteMinder身份验证而不丢失Shiro授权(似乎SiteMinder会在HTTP头中给我用户名和Rolen
在OAuth、OIDC、PKCE、JWT等网站上阅读书籍和观看视频后。我仍然不知道如何在我的应用程序中使用所有这些(安全的REST API)。 我的用例相当简单。我希望我的用户能够使用谷歌、亚马逊、Okta或其他任何方式登录,我想从他们那里得到的唯一信息是他们用来登录的电子邮件地址,没有别的。在他们第一次登录后,他们的电子邮件将被添加到数据库中,在一个单独的过程中,我将授予他们一些权限(他们可以访
我们正在尝试找出IPC身份验证和授权的最佳实践。我会解释的。我们有一个基于微服务的体系结构SaaS和一个专门的认证服务。该服务负责执行身份验证和管理身份验证令牌(JWT)。 现在的问题是如何验证和授权由其他服务发起的请求(没有特定用户的上下文)? 我们是否应该为每个服务生成一个专用用户,并像对待系统中的任何其他用户一样对待它(具有适当的权限)? 我们是否应该在服务之间部署“硬编码”/动态令牌? 还
我想更好地理解隐式授权流和授权代码授权流之间的区别,因为我不确定我目前的理解是否正确。 隐式授权流主要由前端应用程序用于验证用户身份吗? 隐式授权流是否只需要一个client_id、用户名和密码来进行身份验证,换句话说,永远不会发送client_secret? 授权码只是一个短期令牌吗? 将授权码交换为访问令牌后,客户端可以访问用户帐户多长时间?具体地说,如果客户端是一个长时间运行的脚本,那么用户
我在HTTP调用JWT令牌时出现以下错误, 授权调用成功,如下面的屏幕截图所示,但是在为JWT Acess Token制作HTTP调用时(屏幕截图2),下面错误 {"错误":"invalid_grant","error_description":"unsupported_grant_type"} 我是第一次使用/**开发Docusign的新手,我做错了什么?(例如,如果我需要放置/更正URL、标题