业务连接服务(BCS)认证概念整理

I. BDC认证模型

BDC服务支持两种认证模型:信任的子系统,模拟和代理。

在信任的子系统模型中,中间层(通常是Web服务器)通过一个固定的身份来向后端服务器取得认证。选项信任的子系统模型一般基于如下的原因:

· 拥有和管理后端服务器的组向一个它们管理的账号赋予了访问权限;
· 它提供连接池;
· 它减少了后端服务器的许可(licensing)成本;
· 它相对简单。

在模拟和代理模型中,客户端代理了中间层的认证,即中间层模拟客户端以客户端的身份取得后端服务器的认证。选择此认证模型一般基于如下原因:

· 适应后端服务器对于每用户授权的需求;
· 满足后端服务器审计需要。

II. 适用于数据库及Web服务的BDC认证模式

在通过BDC连接数据库或Web服务系统时,可选用如下模式:

1. Pass-Through Authentication (Database and Web Service Systems)

Pass-through认证是操作系统将客户端的认证信息直接传递给后端服务器。BDC对数据库和Web服务连接均支持Pass-through模式。当使用Pass-through模式时,后端认证对象即登录用户。

当BDC通过Web页面访问时,它运行在Web前端服务器的IIS工作进程w3wp.exe上。这个进程的身份是IIS应用池账号,而非模拟登录用户执行服务请求的线程。为避免在DBC向后端服务器认证时丢失了登录用户身份,你必须在运行IIS的服务与其他计算机之间启用Kerberos代理。Kerberos代理可以保证接收服务器将认证请求发送到正确的位置。

当BDC被用来爬网时,它运行在过滤器守护进程mssdmn.exe中。为访问后端的内容源,在过滤器守护进程中的线程模拟与后端内容源关联的内容访问账号。

然而,在使用pass-through认证时,操作系统仅仅暴露用户名和密码。因此,如果一个公司使用两因子(two-factor)认证(也就是说,除了用户名和密码,用户还被要求一些指定的或私有的信息),pass-through认证将不能工作。

尽管有这些不足,但由于使用的简单性,在测试环境或目标服务器使用匿名认证的情况下,pass-through都一个很好的选择。

2. RevertToSelf Authentication (Database and Web Service Systems)

如果一个用户使用Windows认证登录,IIS将模拟那个特殊的账号。因此,当IIS以应用池身份运行时,它模拟登录用户;并且,在被传递出去之前,请求(request)以用户的模拟身份运行。

RevertToSelf(停止模拟)认证使得你从模拟认证复原到IIS应用池的底层配置账号。

3. WindowsCredentials (Database and Web Service Systems)

SharePoint Server 2010通过从它的缺省安全存储服务(SSS)获得的Windows凭据进行认证。

4. RdbCredentials (Database Systems Only)

在数据库凭据模式中,SharePoint Server 2010通过从它的缺省安全存储服务(SSS)获得的数据库凭据进行认证。SharePoint服务器将数据库凭据添加到连接串中,并将此凭据传输到数据库服务器。

5. Credentials (Web Service Systems Only)

SharePoint Server 2010通过使用凭据而非从缺省安全存储服务获得的Windows凭据对Web服务系统进行认证。根据Web服务服务器的配置,这些凭据被用作基本或摘要认证。因为基本和摘要认证没有充分地保护凭据,所以你应当使用SSL,IPsec或同时使用两者在Web服务服务器和运行BDC的服务器之间实现安全通信。

6. DigestCredentials (WCF Web Service Systems Only)

在摘要凭据认证模式下,SharePoint Server 2010使用缺省安全存储服务将用户凭据映射到凭据而非Windows认证所使用的凭据。映射的凭据被用作摘要认证。因为摘要认证没有充分地保护凭据,所以你应当使用SSL,IPsec或同时使用两者在WCF Web服务服务器和运行BDC的服务器之间实现安全通信。

总结:

认证模式

适用于

使用场景

PassThrough

Databases and Web services

· 通过一个单一盒(single-box)配置用于测试环境(数据库服务器和SharePoint服务器在同一台机器上)。
· 所处的域允许Kerberos代理。
· 目的服务器或Web服务使用匿名认证或SSL连接。

RevertToSelf

Databases and Web services

需要将模拟账户复原为IIS配置的底层账号来认证。

WindowsCredentials

Databases and Web services

如果数据库服务器或Web服务使用Windows认证。你需要为这种模式设置安全存储服务。

RdbCredentials

Database systems only

如果你的数据库服务器使用数据库凭据(比如,你的SQL Server服务器使用SQL Server认证而非Windows认证)。你需要为这种模式设置安全存储服务。

Credentials

Web service systems only

如果你的Web服务使用凭据而非Windows凭据。你需要为这种模式设置安全存储服务。

DigestCredentials

WCF Web service systems only

如果你的WCF Web服务使用凭据而非用于摘要认证的Windows凭据。你需要为这种模式设置安全存储服务。

III. 各认证模式所属的认证模型

模型(Pattern/Model)

PassThrough

RevertToSelf

凭据, 摘要凭据, 数据库凭据, Windows凭据 (安全存储个人应用)

凭据, 摘要凭据, 数据库凭据, Windows凭据 (安全存储组应用)

Trusted Subsystem

 

Yes

 

Yes

Impersonation and Delegation

Yes

 

Yes

 

参考:
http://msdn.microsoft.com/en-us/library/ms566523(v=office.14).aspx

IV. 身份验证模式 (外部内容类型 > 外部系统(数据源) > 数据库属性)

1. 用户标识

官方:BDC使用请求外部数据的SharePoint用户的标识来向数据源进行认证。

补充:使用用户标识进行连接,其实就是曾在BDC认证中用过的名为直通(PassThrough)的验证方式。这意味着,Windows身份验证的用户安全令牌将被从浏览器传递给IIS,然后再传递到SQL。这个种方式在开发环境中往往没问题,但是部署到生产环境可能会遇到双跃点问题。

2. BDC标识(RevertToSelf)

官方:

补充:在新建的对话框中你不会看到“RevertToSelf”的选项,须按如下方式实现。首先,执行如下PowerShell脚本打开BCS的RevertToSelf开关:

$bdc = Get-SPServiceApplication | where {$_ -match "Business Data Connectivity"}
$bdc.RevertToSelfAllowed = $true
$bdc.Update()

然后,在创建数据连接时选择 “使用用户标识进行连接”。当连接建立好后,再选择功能区中的“编辑连接属性”,修改身份验证的方式为“BDC标识”。

3. 模拟(impersonated)Windows标识(identity)

官方:BDC将调用者的标识发送给安全存储服务(SSS)。SSS提供映射到调用者标识的Windows凭据。BDC使用映射的Windows凭据向数据源进行认证。

补充:剩下的两个选项都是指向安全存储服务(SSS)。SSS将会在接下来的博文中进行全面解释。 SSS允许我们通过Windows用户,或者某个自定义账户,比如一个联盟的SAML用户帐户进行数据源连接。

4. 模拟(impersonated)自定义标识(identity)

官方:BDC将调用者的标识发送给安全存储服务(SSS)。SSS提供映射到调用者标识的一套自定义凭据(比如表单认证用户名和密码)。BDC使用映射的自定义凭据向数据源进行认证。

补充:当安全存储服务(SSS)被选择作为访问外部数据源的认证用户,并且自定义账号被用于基于表单的认证(FBA)时,需要使用“通过模拟自定义标识连接”。

参考:
http://msdn.microsoft.com/en-us/library/ff798448.aspx
http://blogs.msdn.com/b/sridhara/archive/2010/03/10/bcs-and-external-list-learning-part2.aspx
http://www.cnblogs.com/Sunmoonfire/archive/2010/06/29/1767673.html
http://lightningtools.com/bcs/creating-an-external-content-type-with-sharepoint-designer-2013/

V. BDC访问权限与安全存储服务(SSS)模拟Windows凭据权限

在外部系统的身份验证模式为“模拟Windows标识”的情况下,用户从前端(SharePoint页面)请求外部列表数据,到返回列表数据会涉及到两种权限,一种是SharePoint用于对BDC元数据对象的访问权限,一种是模拟Windows凭据对数据源的访问权限。其中,模拟Windows凭据在“管理中心 > 管理服务应用程序 > Secure Storage Service”页面进行管理,如下图:

对BDC元数据对象的访问权限在“管理中心 > 管理服务应用程序 > Business Connectivity Service”页面配置,如下图:

也就是说,要保证外部列表有权限被读取,首先要保证当前SharePoint用户被授予BDC元数据对象的访问权限;其次要保证在SSS中添加的模拟Windows凭据对数据源有访问权限。

参考:
http://blogs.msdn.com/b/sridhara/archive/2010/01/27/setting-up-bcs-with-secure-store-application-impersonation.aspx

【知识点】业务连接服务(BCS)认证概念整理的更多相关文章

  1. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第13章节--使用业务连接服务创建业务线解决方式 SP Apps中的BCS

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第13章节--使用业务连接服务创建业务线解决方式  SP Apps中的BCS         之前的联系中,你安装了一个业 ...

  2. 微服务(Microservices)和服务网格(Service Mesh)架构概念整理

    注:文章内容为摘录性文字,自己阅读的一些笔记,方便日后查看. 微服务(Microservices) 在过去的 2016 年和 2017 年,微服务技术迅猛普及,和容器技术一起成为这两年中最吸引眼球的技 ...

  3. 【Spring Cloud & Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权

    一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证授权.鉴权的逻辑,结合 ...

  4. DNS,TCP,IP,HTTP,socket,Servlet概念整理

    DNS,TCP,IP,HTTP,socket,Servlet概念整理   常见的协议虽然很容易理解,但是看了之后过一段时间不看还是容易忘,笔记如下,比较零碎,勉强供各位复习.如有错误欢迎指正.   D ...

  5. 170122、Netty 长连接服务

    推送服务 还记得一年半前,做的一个项目需要用到 Android 推送服务.和 iOS 不同,Android 生态中没有统一的推送服务.Google 虽然有 Google Cloud Messaging ...

  6. Netty 长连接服务

    转自:https://www.dozer.cc/2014/12/netty-long-connection.html 推送服务 还记得一年半前,做的一个项目需要用到 Android 推送服务.和 iO ...

  7. 阿里云:面向5G时代的物联网无线连接服务

    在4月24日落幕的2019中国联通合作伙伴大会“5G+物联网(IoT)论坛”上,阿里云高级运营专家李茁出席圆桌对话,分享了5G时代物联网如何更好地推动行业完成生产.管理和商业模式的创新,阿里云又会以何 ...

  8. 服务网格istio概念应知应会

    一.背景 最近架构组基于istio开发了服务网格(Service Mesh)平台,借此机会把相关的背景知识做一次学习和记录,方便回头查看. 初版的效果: 二.istio 官方手册:https://is ...

  9. Java面试必会-微服务权限认证

    微服务身份认证方案 1. 单点登录(SSO) 这种方案意味着每个面向用户的服务都必须与认证服务交互,这会产生大量非常琐碎的网络流量和重复的工作,当动辄数十个微应用时,这种方案的弊端会更加明显. 2. ...

随机推荐

  1. IT公司100题-32-交换元素,使数组差最小

    问题描述: 有两个整数序列a, b,大小都为n, 序列元素的值任意整数,无序. 要求:通过交换a, b 中的元素,使得sum(a)-sum(b),差最小. 例如: var a=[80, 40, 60, ...

  2. OC基础--简介

    OC简介: 1986年,BradCox(布莱德·考克斯)在第一个纯面向对象语言Smalltalk基础上写成了Objective-C语言. 1985年,被赶出苹果公司的Steve Jobs成立了NeXT ...

  3. Activity启动清空原任务栈

    就是 启动新的activity  但是把之前所有的activity 都finish掉 而且所有的activity 都是在一个栈中 Intent intent = new Intent();intent ...

  4. No mapping found for HTTP request with URI

    原因:spring-mvc 的xml配置文件的包名配置错误 <mvc:annotation-driven /> <context:component-scan base-packag ...

  5. linux命令:more

    1.命令介绍: more用来逐页输出文件内容,空格键进入到下一页,b键返回到上一页. 2.命令格式: more [选项] 文件 3.命令参数 +n      从笫n行开始显示 -n       定义屏 ...

  6. 第十三周学习笔记(编辑器选错了重发了这一个 原博客的确周天晚上提交了orz)

    并发:逻辑控制流在时间上的重叠. 构造并发程序的方法: 进程 I/O多路复用 线程 基于进程的并发编程 假设我们有两个客户端和一个服务器,服务器正在监听一个监听表述符上的请求.现在假设服务器接受了客户 ...

  7. C&C++ recap

    大一时候学过C++,可惜忘得差不多了,之后也很少用过.当时使用的是windows系统,使用的还是visual C++.当时对计算机并不感冒,也没好好学.最近在R的学习中遇到瓶颈,觉得要捡起曾经的C/C ...

  8. web安全之sql注入原理

    sql注入的原理:        将(恶意)的SQL命令注入到后台数据库引擎执行的能力,把信息返回到页面 sql注入产生的原因:      过滤不严谨,导致产生的sql注入. sql注入产生的地方:  ...

  9. C++ Primer : 第十四章 : 重载运算与类型转换之重载运算符

    重载前须知 重载运算符是特殊的函数,它们的名字由operator和其后要重载的运算符号共同组成. 因为重载运算符时函数, 因此它包含返回值.参数列表和函数体. 对于重载运算符是成员函数时, 它的第一个 ...

  10. strncpy基本用法

    见百度百科. 注意这句话: (c/c++)复制src中的内容(字符,数字.汉字....)到dest,复制多少由num的值决定,返回指向dest的指针.如果遇到null字符('\0'),且还没有到num ...