1、基本术语的认识【第一阶段先了解基本的术语,第二阶段去熟悉理论】
授权和认证:
Microsoft SharePoint Foundation 支持网站、列表、列表文件夹或库文件夹以及项级别上的用户访问安全性。所有级别上的安全管理均基于角色,这样可为跨 SharePoint Foundation 平台的统一安全管理提供基于角色的一致用户界面和对象模型,从而为对象分配权限。因此,列表级别、文件夹级别或项级别的安全性可实现与网站级别安全性相同的用户模型,从而能够通过网站更方便地管理用户权限和组权限。SharePoint Foundation 还支持对包含在列表和文档库中的文件夹和项的唯一权限。
授权是指 SharePoint Foundation 通过确定哪些用户可以对给定对象执行特定操作,来为网站、列表、文件夹或项提供安全性的过程。授权过程假定用户已经过身份验证,它是指 SharePoint Foundation 以其为依据标识当前用户的过程。SharePoint Foundation 未实现自己的系统来进行身份验证或身份管理,而是仅依赖外部系统(Windows 身份验证或非 Windows 身份验证)。
SharePoint Foundation 支持以下类型的身份验证:
-
Windows 身份验证:所有 Microsoft Internet Information Services (IIS) 和 Windows 身份验证集成选项,包括 Basic、Digest、Certificates、Windows NT LAN Manager (NTLM) 和 Kerberos。Windows 身份验证允许 IIS 对 SharePoint Foundation 执行身份验证。
-
ASP.NET 表单:一种非 Windows 身份管理系统,该系统使用基于 Microsoft ASP.NET 表单的可插入验证系统。该模式允许 SharePoint Foundation 使用包括外部定义的组或角色在内的多种身份管理系统,如轻型目录访问协议 (LDAP) 和轻型数据库身份管理系统。表单身份验证允许 ASP.NET 对 SharePoint Foundation 执行身份验证,通常涉及重定向到登录页。在 SharePoint Foundation 中,ASP.NET 表单仅在声明身份验证下受支持。表单提供程序必须注册到为声明配置的 Web 应用程序。
http——digest认证:
摘要认证 digest authentication ← HTTP1.1提出的基本认证的替代方法
服务器端以nonce进行质询,客户端以用户名,密码,nonce,HTTP方法,请求的URI等信息为基础产生的response信息进行认证的方式。
※ 不包含密码的明文传递
摘要认证步骤:
1. 客户端访问一个受http摘要认证保护的资源。
2. 服务器返回401状态以及nonce等信息,要求客户端进行认证。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="testrealm@host.com",
qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
opaque="5ccc069c403ebaf9f0171e9517f40e41"
3. 客户端将以用户名,密码,nonce值,HTTP方法, 和被请求的URI为校验值基础而加密(默认为MD5算法)的摘要信息返回给服务器。
认证必须的五个情报:
・ realm : 响应中包含信息
・ nonce : 响应中包含信息
・ username : 用户名
・ digest-uri : 请求的URI
・ response : 以上面四个信息加上密码信息,使用MD5算法得出的字符串。
Authorization: Digest
username="Mufasa", ← 客户端已知信息
realm="testrealm@host.com", ← 服务器端质询响应信息
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", ← 服务器端质询响应信息
uri="/dir/index.html", ← 客户端已知信息
qop=auth, ← 服务器端质询响应信息
nc=00000001, ← 客户端计算出的信息
cnonce="0a4f113b", ← 客户端计算出的客户端nonce
response="6629fae49393a05397450978507c4ef1", ← 最终的摘要信息 ha3
opaque="5ccc069c403ebaf9f0171e9517f40e41" ← 服务器端质询响应信息
4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。
特记事项:
1. 避免将密码作为明文在网络上传递,相对提高了HTTP认证的安全性。
2. 当用户为某个realm首次设置密码时,服务器保存的是以用户名,realm,密码为基础计算出的哈希值(ha1),而非密码本身。
3. 如果qop=auth-int,在计算ha2时,除了包括HTTP方法,URI路径外,还包括请求实体主体,从而防止PUT和POST请求表示被人篡改。
4. 但是因为nonce本身可以被用来进行摘要认证,所以也无法确保认证后传递过来的数据的安全性。
※ nonce:随机字符串,每次返回401响应的时候都会返回一个不同的nonce。
※ nounce:随机字符串,每个请求都得到一个不同的nounce。
※ MD5(Message Digest algorithm 5,信息摘要算法)
① 用户名:realm:密码 ⇒ ha1
② HTTP方法:URI ⇒ ha2
③ ha1:nonce:nc:cnonce:qop:ha2 ⇒ ha3
◆ WSSE(WS-Security)认证 ← 扩展HTTP认证
WSSE UsernameToken
服务器端以nonce进行质询,客户端以用户名,密码,nonce,HTTP方法,请求的URI等信息为基础产生的response信息进行认证的方式。
※ 不包含密码的明文传递
WSSE认证步骤:
1. 客户端访问一个受WSSE认证保护的资源。
2. 服务器返回401状态,要求客户端进行认证。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: WSSE
realm="testrealm@host.com",
profile="UsernameToken" ← 服务器期望你用UsernameToken规则生成回应
※ UsernameToken规则:客户端生成一个nonce,然后根据该nonce,密码和当前日时来算出哈希值。
3. 客户端将生成一个nonce值,并以该nonce值,密码,当前日时为基础,算出哈希值返回给服务器。
Authorization: WSSE profile="UsernameToken"
X-WSSE:UsernameToken
username="Mufasa",
PasswordDigest="Z2Y......",
Nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
Created="2010-01-01T09:00:00Z"
4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。
特记事项:
1. 避免将密码作为明文在网络上传递。
2. 不需要在服务器端作设置。
3. 服务器端必须保存密码本身,否则无法进行身份验证。
2、实战介绍