[译] 认证 vs 授权

简介: 原文:Authentication vs Authorization有许多实用并且具有哲学性的方法来讨论这两个术语的区别。但是这里确实有一些困惑,我想要从如今普遍用于构建应用的基于 token 的协议的“通常猜测”的角度去看待它。

原文:Authentication vs Authorization

有许多实用并且具有哲学性的方法来讨论这两个术语的区别。但是这里确实有一些困惑,我想要从如今普遍用于构建应用的基于 token 的协议的“通常猜测”的角度去看待它。特别是我想要解析清楚 OAuth2 和 OpenID Connect 各自的适用场景。

首先看一下“正式”定义:

认证 是个人或者计算机程序为了获取信息而证实他们身份的过程。
授权 是许可个人或者实体权限从而在一个安全的环境使用资源的行为。通常与认证紧密相关。

认证

我的经验法则是,当应用请求 identity token 供它自己使用以提供个性化或者应用访问控制的特性时,那就是认证。或者从技术上来讲,请求到的 token 的受众是请求者本身,而且请求的应用能够解析和验证 token 以当中包含的信息。

Slide1

用于认证的典型协议有:Kerberos, WS-Federation, SAML2p, OpenID (Connect) 。得到的 token 常称为 identity token 。

授权

相反,当应用请求 token 供第三方而非自己使用的时候——比如,后台,属于授权存储区。这个 token 对于请求者是不透明的并且只在受众(也就是后台)的上下文中才有意义。后台可以解析并验证 token ,可以根据里面的内容实现访问控制的管理。

Slide2

用于授权的典型协议有:Kerberos, WS-Trust, OAuth2 。得到的 token 常称为 access token 。

但是——怎么使用 OAuth2 进行认证?

一些提供商建议使用 OAuth2 来完成登录——但这适合吗?当你进一步了解 OAuth2 的时候会发现它本身并不能提供认证服务,你可以看到这些提供商会使用一些自定义的扩展来完成这个工作。引用一下 Google 的文档(链接):

“这里所述的 Google 端点与 OpenID Connect 规范保持一致,目前,它还处于草案阶段。作为参考,OpenID Connect 规范与 OAuth 2.0 协议很相似。在规范完善的过程中,Google 端点将会不断进行更新。”

分享一些能够告诉你 OAuth2 认证骗局的文章,推荐阅读 Tim Bray 的 这篇 文章,OpenID Connect 规范 ,以及 这篇这篇 解释了为什么 OAuth2 本身是不够的。

相关文章
|
数据安全/隐私保护
关于 OAuth 2.0 统一认证授权
随着互联网的巨头大佬逐渐积累了海量的用户与数据,用户的需求越来越多样化,为了满足用户在不同平台活动的需求,平台级的厂商则需要以接口的形式开放给第三方开发者,这样满足了用户的多样性需求,也可以让自己获得利益,让数据流动起来,形成给一个良性的生态环境,最终达到用户、平台商、第三方开发者共赢。
2955 0
|
2月前
|
安全 生物认证 数据安全/隐私保护
用户认证与授权
【8月更文挑战第10天】
48 1
|
2月前
|
数据安全/隐私保护
OAuth 2.0身份验证及授权
8月更文挑战第24天
115 0
|
3月前
|
安全 前端开发 Java
实现基于OAuth2的安全认证与授权
实现基于OAuth2的安全认证与授权
|
5月前
|
Kubernetes 安全 API
k8s-身份认证与权限
k8s-身份认证与权限
|
4月前
|
测试技术
appc认证
【6月更文挑战第2天】appc认证
75 0
|
4月前
|
UED 开发者
WCAG认证的意义是什么?
【6月更文挑战第2天】WCAG认证的意义是什么?
46 0
|
4月前
|
监控 搜索推荐 UED
如何通过WCAG认证提升品牌形象?
【6月更文挑战第2天】如何通过WCAG认证提升品牌形象?
41 0
|
10月前
|
Kubernetes Cloud Native 数据安全/隐私保护
k8s 认证和权限控制
k8s 认证和权限控制
106 1
|
存储 开发框架 安全
快速理解 IdentityServer4 中的认证 & 授权
在实际的生产环境中,存在各种各样的应用程序相互访问,当用户访问 `app` 应用的时候,为了安全性考虑,通常都会要求搭配授权码或者安全令牌服务一并访问,这样可有效地对 `Server` 端的 `API` 资源起到一定程度的有效保护...
435 0
快速理解 IdentityServer4 中的认证 & 授权