[ SharePoint ADFS 开发部署系列 (一)]
前言
本文完全原创,转载请说明出处,希望对大家有用。
随着企业信息化建设逐渐成熟,基于微软体系的企业内部系统架构在众多企业中得到应用,随之而来的用户统一身份认证(SSO)问题成为企业IT部门急需解决的问题。本期主题围绕Active Directory Federation Services与SharePoint Server 2013集成,理解ADFS的实现方式,同时实现以SharePoint企业门户为中心的企业级办公平台,解决基于微软AD身份验证的统一身份认证问题。接下来我们从ADFS的安装、部署、集成等方面,以三篇博客完成整个系列。
正文
ADFS介绍

Active Directory Federation Services是一种标准的基础服务, 它允许在外部网络之间安全共享可信任伙伴的身份信息。ADFS是基于Web的单点登录(Single Sign-On (SSO))的标准, 它通过实现了foreast间的claim based authentication而了开启了联合身份(federated identity).Claim based authentication是一种认证用户的过程, 它的实现基于装在trusted token中的关于用户身份的一系列claims。这样的一个token通常是由一个能够通过其他途径来认证用户的一个实体来生成并赋予的, 并且这个实体还得被实现了claim based authentication的实体所信任。在ADFS中, 身份的联合(identity federation )是通过在两个组织的安全边界间建立信任关系来实现的. 在一端(account side)的federation server 负责通过在Active Directory domain services中的标准方式认证一个用户, 然后生成一个包含一系列包含有关这个用户的claims的token, 包括federation server的实体本身. 另一端(resource side), 另一个federation server会校验这个token, 然后生成另一个token供本地服务器接受claimd identify所用. 这允许系统为它的资源提对另外一个安全边界的某用户供可控制的访问权限, 而不需要让这个用户直接登录系统, 也不需要两个系统共享用户的identify和密码。此方式下需要在客户环境安装ADFS服务,同时需要第三方应用集成ADFS认证,从而实现用户的单点登录。ADFS验证流程如下:

ADFS验证方式下的身份信息传递步骤:
- 用户打开浏览器访问Web资源
- Web应用根据当前用户信息返回是否已登陆的标识符
- 如未登陆,则页面跳转至ADFS验证页面,要求用户输入凭据(AD账号密码)
- 验证通过,则返回有效的Token到客户端
- 客户端携带该Token的请求再次发送到Web资源,Web应用程序成功返回请求的资源信息
如何安装部署
ADFS 3.0的安装官方提供了完整的安装部署文档:
https://msdn.microsoft.com/en-us/library/azure/dn528857.aspx
以Windows Server 2012 R2为例,开启ADFS功能,并连接相应的数据库即可。安装完成后,通过浏览器访问https://your_adfs_server_url/federationmetadata/2007-06/federationmetadata.xml查看元数据文件:

本次主题围绕与SharePoint Server 2013的集成,秉承前人栽树后人乘凉的原则,同时配置也不是本文的重点内容,所以请参考以下配置文档:
https://technet.microsoft.com/zh-cn/library/hh305235.aspx(官方文档)
http://blog.csdn.net/duanchuanttao/article/details/51374678
与SharePoint集成中所用的证书
在安装和部署过程中,我们参考上面的安装配置文档即可以正常的完成,但经常会遇到证书的各种问题,如无法信任、导入版本异常等。下面我们针对配置过程中使用到的证书逐一进行分析讲解。
1. ADFS Signing证书
ADFS Signing证书是用于验证令牌颁发者的身份是否合法,ADFS所支持的SSL传输协议,为了保证正确解码,我们需要将Signing证书导入到SharePoint中。在使用过程中,请注意证书的有效期限,如果在使用中证书过期,SharePoint会报无法解析令牌的错误。证书在绑定前,请注意将该证书所属证书链上的所有证书都导入计算机证书管理中。比如根证书导入到根证书信任机构,中间证书导入到中间证书信任机构。如果导入的证书链不正确,会导致系统请求证书验证错误,具体错误我们会在系统优化时来讲解。
2. SharePoint 前端服务器SSL证书
ADFS 3.0支持的信任伙伴必须使用SSL协议,故我们安装的SharePoint Server 2013中Web服务器必须安装私有或共有的SSL证书。证书在绑定前,请注意将该证书所属证书链上的所有证书都导入计算机证书管理中。比如根证书导入到根证书信任机构,中间证书导入到中间证书信任机构。
3. SharePoint Root Authority certificate
这个证书是SharePoint自动生成的根证书,在Windows 验证下,我们无需使用到该证书。当SharePoint 与 ADFS集成后,系统会使用该证书,并验证其有效性,具体使用方式,我们在后续系统优化时讲解。
结束语
先简单开个头,下一篇写由ADFS返回的Claims,SharePoint又如何使用和保存这些Claims,请继续关注后续博客。
[ SharePoint ADFS 开发部署系列 (一)]的更多相关文章
- Sharepoint 2013 安装部署系列篇 第三篇 -- 安装和配置网络负载均衡在前端web服务器
第一部分 系统集群安装 第二部分 SQL集群安装 第四部分 安装和配置sharepoint 场(三层拓扑部署) 接下来一步一步开始配置NLB吧, 以下开始讲解如何配置NLB集群作为sharepoint ...
- Sharepoint 2013 安装部署系列篇 第二篇 -- SQL集群安装
第一部分 系统集群安装. 第三部分 安装和配置网络负载均衡在前端web服务器 第四部分 安装和配置sharepoint 场(三层拓扑部署) 以下图片均为sharepoint 2010..由于本人的笔记 ...
- Sharepoint 2013 安装部署系列篇 第一篇 -- 系统集群安装
这部分讲述怎样配置两台服务器作为sql集群. 准备 *你需要两个网卡在每台服务器上,一个是共有,另一个是私有的(heartbreak通信)*共享存储如SAN存储需要至少如下配置,并且需要连接到每台节点 ...
- SharePoint 2013 开发——开发并部署第一个APP
博客地址:http://blog.csdn.net/FoxDave 本篇我们开始对开发APP应用程序进行了解. 本篇基于本地SharePoint环境(如果是Office 365的话会方便许多),需 ...
- 转载 SharePoint开发部署WSP解决方案包
转载原出处: http://642197992.blog.51cto.com/319331/1582731 注:本文所讲内容以SharePoint2013版本为例,开发工具以VS2013为基础.历史版 ...
- 【Xamarin开发 Android 系列 13】 应用打包部署
原文:[Xamarin开发 Android 系列 13] 应用打包部署 开始倒叙咯................ 先更新大宝部署吧,这个章节比较的Easy,童鞋们不用费脑筋.点解?从界面上填写几个参 ...
- 【Xamarin开发 Android 系列 1】环境部署搭建
原文:[Xamarin开发 Android 系列 1]环境部署搭建 开篇自然先扯一段,近几年移动互联网如果熊猫零食一样,蔓延迅速.楼主身为一个微软忠实的粉丝,无奈,老爹不给力.Silverlight开 ...
- 系列文章--SharePoint 2013 开发教程
做了SharePoint有三年了,大家经常会问到,你的SharePoint是怎么学的,想想自己的水平,也不过是初级开发罢了.因为,SharePoint开发需要接触的东西太多了,Windows操作系统. ...
- C#开发BIMFACE系列47 IIS部署并加载离线数据包
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前两篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>与<C#开发BIMFACE系 ...
随机推荐
- NSPredicate 查询/搜索
IOS NSPredicate 查询.搜索 简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取. 最常用到的函数 + (NSP ...
- Go语言并发机制初探
Go 语言相比Java等一个很大的优势就是可以方便地编写并发程序.Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源.这篇文章学习 g ...
- SQL 中的常用函数及使用
在SQL中我们使用的函数有很多,我们经常使用的就是下面的一些函数,那么我一一列举数来: 1:聚合函数:MAX 返回指定数据的最大值. MIN 返回指定数据的最小值. COUNT 返回指定组中项目的数量 ...
- nao安装中文包教程
本文介绍nao离线安装中文包 相官方索取 .demo 文件夹,里面包含很多的例程和中文包 下载winscp和putty(或者xshell),下载过程和安装我就不多说了,免费 把nao开机,连接路由器等 ...
- RxJava Map操作详解
2016-06-06 RxJava是最近两年火起来的一个框架,核心是异步,但是对于我来说印象最深的是响应式编程的思想.最近刚好想把自己的项目改成用RxJava实现,所以就研究了下.抛物线和大头鬼两位大 ...
- El表达式的用法个人总结
EL表达式的好处: 通过EL可以简化在JSP开发中对对象的引用,从而规范页面代码,增加程序的可读性及可维护性. EL表达式的几个特点: 1:可以与jsp标签库结合使用,也可以与javascript语 ...
- [译]Selenium Python文档:二、初步开始
2.1.简单使用 如果已经安装好了Selenium Python,你就可以像下面这样编写Python代码来使用它了: from selenium import webdriver from selen ...
- 【子非鱼】冒泡排序过程呈现之java内置GUI表示
自己玩玩写写,排序的过程多么有趣,特别是把看着电脑吧一堆乱七八糟的数据排成有序组合的时候,看起来贼舒服,特别是强迫症患者.好了,话不多说上代码,也算是自己记录一下吧,没有什么技术含量但个人感觉比较有趣 ...
- DataTable的AcceptChanges()方法和DataRow的RowState属性
这个属性是一个只读属性的枚举类型,一共有五个值,Detached,Unchanged,Added,Deleteed,Modified, 属性名 值 备注 Detached 1 已创建该行,但是该行不属 ...
- flex与后台及页面间对象的传递
1.从flex中发送请求后,利用<s:RemoteObject/>启用回调方法,类似于jQuery的post函数: <fx:Declarations> <s ...