令牌认证和SSL

时间:2019-03-10 10:41:17

标签: asp.net-web-api oauth-2.0 jwt openid-connect

我在保护API的这一领域还比较陌生。我的大部分职业是开发供组织使用的内部产品,或加入已经实施安全性的产品(通常不会改变)

在阅读有关JWT和身份服务器的信息时,我了解了签名的作用以及将授权和身份验证分开的必要性。但是,有一件事让我感到奇怪: 如果我的用户将要获得一个已签名的令牌并使用它来对自己进行身份验证,并且有一个“中间人”在侦听并复制该令牌,他是否可以冒充我的用户? (我相信答案是肯定的) 因此,我最好的选择是在每次调用API时都使用SSL。令牌是临时令牌,对安全性的威胁也不少。

所以,我的问题是: 如果最终在API调用上使用SSL,那么签名有什么用?使用SSL,无论如何流量都是隐藏的,没有人可以篡改它。浏览器可能会将用户名和密码用作纯文本,并且不会暴露。 我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

我认为所有人都归结为JWT在OpenID Connect协议(OIDC)中的作用。

在OIDC中,ID token是JWT。而且,如果您经历RFC7519 - JSON Web Token,那么就会遇到Trust Decisions section

  

JWT的内容不能在信任决定中依赖      除非其内容已通过密码保护并绑定到      信任决定所需的环境

从OIDC的角度来看,信任决策是基于ID令牌中包含的声明对最终用户进行身份验证。仅当验证符合JWT规范时才能执行此操作。因此,基本上这是OIDC协议和JWT规范的要求。

现在有关SSL。 OIDC包含获得最终令牌响应所需的其他几个调用。这些调用包含客户端标识符,机密和授权代码(取决于流)。 OIDC建立在OAuth 2.0和OAuth 2.0 mandate SSL(TLS是新名称)的基础上。因此,OIDC也需要SSL。

结合使用,SSL(TLS)可以防止请求和响应在网络中传播时受到攻击。而且,JWT的签名保证令牌的真实性与令牌的接收方式或应用程序的哪个组件无关。