欢迎光临散文网 会员登陆 & 注册

实施身份验证系统

2022-09-14 21:58 作者:乐琪教育  | 我要投稿

一、在互联网实施SSO

1.可扩展标记语言(XML)

XML可以包含标记,用于将数据描述为所需的任何内容。可用来传输和存储数据,组织使用基于XML的语言来共享身份验证信息和授权信息。


2.安全断言标记语言(SAML) 重点

安全断言标记语言是一种XML标准,允许在安全域之间共享身份验证和授权数据的交换。(交换数据)

SAML 2.0规范使用三个实体:

  • 委托人或用户代理(Principal or Agent) --- 就是用户

  • 服务提供者(Service Provider,SP) --- 微博,我用微信的身份登录微博

  • 身份提供者(Identity Provider,IdP) --- 微信,我用微信完成身份验证

IdP可以发送三种类型的断言:

  • 身份验证断言(Authentication Assertion):提供证明用户代理提交了正确的凭据,并标识了身份识别方法和用户登录时间。

  • 授权断言(Ahthorization Assertion):提供是否授权用户代理访问请求的服务。

  • 属性断言(Attribute Assertion):提供有关用户代理的任何信息。

3.Oauth (不是重点)

Oauth 2.0是一个授权框架,不是身份验证协议,通过交换API消息发放令牌进行授权。

OAuth提供了从另一个服务访问资源的能力。OAuth 是一个面向第三方的开放授权(而非身份验证)标准。对于该技术,一般认为,这允许用户授权网站使用用户在其他网站控制的东西。用户允许Web 站点访问第三方。


4.OpenID

OpenID 是第三方进行用户身份验证的开放标准。(站点提供方允许在应用程序中使用来自另一个服务的账户。


5.OIDC(就是OpenID + OAuth)

OpenID Connect是一种基于JSON的RESTful身份验证协议,与OAuth配合使用时,可以提供身份验证和基本配置文件信息。OIDC 最常见的用法是,允许Web 应用程序(依赖方)使用第三方IdP 对最终用户进行身份验证同时可从该IdP 获取有关该用户的信息。


6.比较SAML、OAuth、OpenID和OIDC

SAML使用断言来传递身份验证和授权信息,OIDC使用JWT来传递身份验证和授权信息。SAML的兄弟概念:

  • 服务配置标记语言(SPML):基于XML,专门为交换用户信息而设计,即用于同步创建、修改、删除账号。(交换配置)

  • 可扩展访问控制标记语言(XACML):用于在XML格式中定义访问控制策略通常用于实现RBAC。

------------------------------------------------------

二、内部网络实施SSO

1.AAA协议

用于提供身份验证,授权和记账的协议被称为AAA协议,为远程访问系统提供集中访问控制。

2.Kerberos

Kerberos是一种票据身份验证机制,V5版本使用对称加密算法AES来保护机密性。

Kerberos核心组件:

  • 密钥分发中心(KDC):管理所有成员的对称密钥,用于身份验证的可信第三方。

  • AS(Authentication Service):初始化授权认证。

  • TGT(Ticket granting ticket):临时票据,AS临时发放TGT。(电影票的付款记录)

  • TGS(Ticket Granting Service):负责票据管理(正式票据)

  • Ticket:正式票据,客户可以用它来向服务器证明自己的身份(在电影院换的正式票据)

流程:

1.AES加密用户名,发送给KDC,这个过程不发送任何密码;

2.KDC解密用户名通过认证,使用客户端密码的哈希值加密临时密钥(KeyC-S)

3.生成加密(KDC密码的哈希值加密)带有时间戳的授予票证TGT,这里要注意的是,用的是KDC的密码进行哈希,所以无法被客户端解密。

4.发送加密的临时密钥和加密带时间戳的授予票证TGT给客户端。这时客户端可以解出临时密钥,无法解出TGT,只能使用。

5.使用客户端密码进行哈希获取哈希值从而解出临时密钥,并安装TGT。

6.将TGT发送给KDC,请求访问服务器。

7.KDC生成服务票据ST(临时密钥KeyC-S被KeyC和KeyS分别加密,含客户端信息)发送给客户端。这里的临时密钥与之前不同,是客户端和服务器之间通信使用的。

8.客户端使用KeyC解密临时密钥KeyC-S,解密临时密钥和ST。

9.客户端将服务票据ST发送给服务器。

10.服务端用自己的KeyS解出临时密钥KeyC-S,使用临时密钥解密客户端信息


注:预身份验证,如果这个安全功能打开,则第一步需要客户端用自己的密码哈希去加密时间戳发送给KDC,KDC能够解出,从而证明客户端确实拥有这个密码。

零知识证明的简单理解:你能解出来,证明你是,而不是你提供了身份信息,所以你是。


风险点:

1、KDC是一个单点故障,如果KDC出现故障,没有人能获得所需的资源。冗余的KDC是必要的。

2、KDC必须能够实时处理收到的大量请求。它必须是可扩展。

3、秘钥临时存储在用户工作站上,这意味着入侵者有可能获得这些秘钥。

4、Kerberos容易遭受密码猜测攻击。KDC不知道是否发生字典攻击。

5、如果没有应用加密,那么Kerberos不能保护网络流量。

6、如果秘钥太短,他们可能很容易受到蛮力攻击。

7、Kerberos需要所有客户端和服务器保持时钟同步。


3.RADIUS

RADIUS使用UDP 1812和1813传输信息,传输的信息仅密码被加密。可通过使用TLS加强传输安全性,使用TCP端口2083,称为RADIUS/TLS。

4.TACACS+

Cisco专有协议,可将AAA分别托管到不同服务器,通过TCP 49端口传输,可加密所有身份验证信息。


实施身份验证系统的评论 (共 条)

分享到微博请遵守国家法律