Secure Store Service应用

一、用户凭据录入

你可以使用系统默认的页面(http:/<samplesite>/_layouts/SecureStoreSetCredentials.aspx?TargetAppId=<TargetApplicationID>)用于用户凭据录入,也可以使用自定义的页面创建、更新用户凭据。下面的代码用来更新(创建)当前用户的特定目标应用程序凭据:

 public static void SetCredentials(string appId, string[] userInfo)
        {
            List<SecureStoreCredential> creds = new List<SecureStoreCredential>();
            SecureStoreCredential name = new SecureStoreCredential(toSecureString(userInfo[0]), SecureStoreCredentialType.WindowsUserName);
            SecureStoreCredential pwd = new SecureStoreCredential(toSecureString(userInfo[1]), SecureStoreCredentialType.WindowsPassword);
            SecureStoreCredential EmailAddress = new SecureStoreCredential(toSecureString(userInfo[2]), SecureStoreCredentialType.Generic);
            creds.Add(name);
            creds.Add(pwd);
            creds.Add(EmailAddress);
            SecureStoreCredentialCollection credes = new SecureStoreCredentialCollection(creds.ToArray());
            SecureStoreServiceProxy proxySs = new SecureStoreServiceProxy();
            SPSite site = null;
            SPWeb web = null;
            SPSecurity.RunWithElevatedPrivileges(delegate()
              {
                  site = SPContext.Current.Site;
                  web = SPContext.Current.Web;
              });
            site.AllowUnsafeUpdates = true;
            web.AllowUnsafeUpdates = true;
            SPServiceContext context = SPServiceContext.GetContext(site);
            ISecureStore store = proxySs.GetSecureStore(context);
            store.SetCredentials(appId, credes);
            web.AllowUnsafeUpdates = false;
            site.AllowUnsafeUpdates = false;
        }

参数介绍:
appid:目标应用程序ID,也就是上面步骤新建的“FirstID”;

userInfo:从页面中获取的用户信息列表;

方法介绍:

1、创建字段实例(注:实例名称与实际目标应用程序字段名称没有关联,只要顺序对就可以了,当然类型要一致)

SecureStoreCredential name = new SecureStoreCredential(toSecureString(userInfo[0]), SecureStoreCredentialType.WindowsUserName);

上面这句语句是创建一个凭据字段,对应FirstID中的“Windows用户名”,此类型包含一个2个参数的构造函数(字段值,字段类型);

2、创建Secure Store Service代理,获取当前SharePoint Secure Store Service上下文环境

3、为site,web提升权限

SPSecurity.RunWithElevatedPrivileges(delegate()
              {
                  site = SPContext.Current.Site;
                  web = SPContext.Current.Web;
              });
4、使用ISecureStore的SetCredentials方法更新(创建)用户凭据。

5、最后,会注意到有一个toSecureString方法,这个方法是对字符串进行安全编码,代码是:

 public static System.Security.SecureString toSecureString(string s)
        {
            System.Security.SecureString secureString = new System.Security.SecureString();

            foreach (Char character in s)
            {
                secureString.AppendChar(character);
            }

            return secureString;
        }

利用上面的代码,就可以为用户配置目标应用程序的凭据。

二、根据当前用户获取该用户凭据信息

使用上面的方法将用户凭据录入后,下一步就是利用Secure Store Service获取用户凭据。

使用EMSManagedAPI操作Exchange邮箱所在的博客中,有一个步骤是需要用户的账号和密码。另外,上面在创建目标应用程序的过程中,多加了一列EmailAddress,这样我们就可以用EWS Managed API中AutodiscoverUrl方法,而不需要知道具体的邮件服务器服务地址,代码就可以改为:

原代码:
        service.Credentials = new WebCredentials(creds);
            service.Url = new Uri("https://服务器地址/ews/exchange.asmx");
            service.PreAuthenticate = true;
修改后:
        service.Credentials = new WebCredentials(creds);
            service.AutodiscoverUrl(EmailAddress);
            service.PreAuthenticate = true;

上面是对之前应用的一点优化,如果有兴趣,可以去看之前的博客。接下来是如何取得用户凭证的实例。

Secure Store Service不需要指定用户,会直接根据当前上下文获得当前登陆用户,下面是获取用户信息列表的方法:

public List<string> GetUserCredentialCollection(string appId, SPServiceContext CurrentContext)//appid is the SSS‘ ID
        {
            List<string> credentialList = new List<string>();
            SecureStoreProvider prov = new SecureStoreProvider();
            SPServiceContext context = CurrentContext;

            prov.Context = context; //当前上下文信息,以便从上下文中找到当前登陆用户
            try
            {
                SecureStoreCredentialCollection cc = prov.GetCredentials(appId);
                for (int i = 0; i < cc.Count; i++)
                {
                    ISecureStoreCredential c = cc[i];
                    IntPtr ptr = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(c.Credential);
                    string sDecrypString = System.Runtime.InteropServices.Marshal.PtrToStringUni(ptr);
                    credentialList.Add(sDecrypString);
                }
            }
            catch
            {

            }
            return credentialList;
        }

其实最重要的是for循环中的方法,根据目标应用程序ID,获取用户凭据集合,遍历用户凭据字段并存放到List中,之后就可以根据个人需求来利用这些信息。

到这里Secure Store Service的应用基本就结束了,总体来说Secure Store Service有利有弊,对于安全性要求很高的用户来说,可能并不是一个最佳的选择。但Secure Store Service得灵活性较好,可以存储用户的多个应用程序凭据,对于多个系统集成有很好的兼容性。有兴趣的朋友,可以一起讨论,这篇博客就先写到这里了。

时间: 2024-11-05 15:29:59

Secure Store Service应用的相关文章

SharePoint Secure Store Service(SSSS)的使用(一)

SSS在案例中的应用: SSS介绍 SSS部署 SSS应用 http://www.cnblogs.com/renzh/archive/2013/03/31/2990280.html 创建.部署.应用SSS: 配置SSS(安全存储):注册域账户.开启服务.新建Secure Store Service服务 使用加密秘钥 创建目标应用程序 设置目标应用程序凭据 https://technet.microsoft.com/ZH-CN/library/ee806866.aspx

Sharepoint 2013 通过Secure Store Service获取用户信息

1.在用Secure Store Service获取用户信息之前需要配置SSS. 2.以下代码是获取用户信息: using (SPSite site = new SPSite(webUrl)) { SecureStoreProvider prov = new SecureStoreProvider(); SPServiceContext context = SPServiceContext.GetContext(site); prov.Context = context; //current u

Sharepoint2013商务智能学习笔记之Secure Store Service服务配置(二)

Secure Store Service 是运行在应用程序服务器上的授权服务,它提供一个存储用户凭据的数据库,Secure Store Service 在商务智能中的地位很重要,Sharepoint商务智能提供的服务都可以通过配置Secure Store Service存储的凭据来读取数据源.详情参考: 在 SharePoint Server 2013 中规划 Secure Store Service ,Secure Store Service服务安装和配置步骤如下 第一步,进入管理中心,在系统

创建Secure Store Service Applicaiton

Secure Store Service 是运行在应用程序服务器上的授权服务.Secure Store Service 提供一个用于存储凭据的数据库.这些凭据通常由用户标识和密码组成,不过也可包含您定义的其他字段.例如,SharePoint Server 2013 可以使用安全存储数据库来存储和检索用于访问外部数据源的凭据.Secure Store Service 为存储多个后端系统的多组凭据提供了支持. Secure Store Service 可以为一下服务存储用户凭据: Excel Ser

SharePoint在管理中心创建Secure Store

SharePoint在管理中心创建Secure Store SSS(Secure Store service)可以作为核心服务,因为很多其他服务都要求设置这个服务来起作用.它的作用之一就是提供安全数据库,储存和应用程序ID关联的凭据.这些ID用来访问外部数据源的内容.这是通过在Secure Store数据库创建账户来实现的.Secure Store将被用来储存ID,访问仪表板显示的数据源.这些是外部数据源如SQL Server或SAP.MOSS 2007也通过使用应用程序代理ID提供了这个功能.

Sharepoint2013商务智能学习笔记之Performancepoint service 配置(九)

1)配置Performance Service服务 第一步,新建performance service.先在管理中心,系统设置区域点击管理服务器上的服务,确认Performance Service服务在需要承载的服务器上启动了.然后在管理中心,应用程序管理区域,点击管理服务器应用程序,新建Performancepoint Service 第二步,设置Performancepoint service无人值守账号 performancepoint service新建完成之后,在应用程序列表点击进入

SharePoint 2010 之 数据库架构

1.SharePoint Foundation 2010 数据库 1)配置数据库 配置:SharePoint_Config 配置数据库包含有关 SharePoint 数据库.Internet Information Services (IIS) 网站.Web 应用程序.受信任的解决方案.Web 部件包.网站模板以及特定于 SharePoint 2010 产品的 Web 应用程序和服务器场设置(例如默认配额设置和被禁止的文件类型)的数据. 在仅服务器场配置备份或还原过程中,不会保存许多配置设置,尤

SharePoint 高可用和备份恢复方案(一, 系统层面的要求与介绍)

 SharePoint 高可用和备份恢复方案(一 SharePoint 层面) 高可用性(High Availability),是指在服务器出现硬件或者网络故障的时候,尽可能不会中断服务,并尽可能减少对用户的影响. SharePoint服务器场本身是一个典型的三层架构(从2007.到2010.2013再到2016,这个基本的架构都是一样的),也就是前端服务器 - 应用服务器 - 数据库服务器.当然随着系统优化和对高可用要求提升,高可用和恢复技术也有所提高. 也许大家都很清楚SharePoin

SharePoint 2013实例1&mdash;构建三层服务器场8&mdash;配置WEB层

本节我们来进行WEB层的配置,如下图标红处. 服务器 主机名 内存 IP 前端服务器WFE#1 srv-wfe01 16G 192.168.5.75 前端服务器WFE#2 srv-wfe02 16G 192.168.5.76 1. 准备工作 和之前APP服务器一样,首先需要安装必备软件,然后再安装Sharepoint Server,最后进入产品安装配置向导. 2.安装WEB前端服务器 选择连接现有服务器场 选择数据库 输入场连接密码 点击高级设置 由于WEB前端服务器不承担管理中心的任务,所以这