关键词:O2OA,系统集成,SAML,AD域认证,ADSF,SSO,单点认证

O2OA平台提供灵活的系统集成方案,让企业信息平台与各类第三方系统进行集成。本篇主要介绍如何在O2OA中使用微软ADSF单点认证的方案与其他系统实现单点登入


一、基本概念

1.1、 ADSF

Active Directory联合身份验证服务(AD FS,Active Directory Federation Services)是由微软自Windows Server 2003 R2起,在各个Server版本操作系统中提供的一个软件组件,其最新版本是集成在Windows Server 2019 的AD FS 2019(Azure AD)。

ADFS 使用基于Claims的访问控制验证模型来实现联合认证。它提供 Web 单一登录技术,这样只要在会话的有效期内,就可对一次性的对用户所访问的多个Web应用程序进行验证。

常见的联合身份验证的实现有SAML、OAuth、OpenID等方式,本文主要介绍的是基于Claims和SAML 2.0的 AD FS 联合身份验证


1.2、 AD

AD的全称是Active Directory:活动目录,可以简单理解为LDAP。


1.3、 SAML

SAML (Security Assertion Markup Language),saml是一种xml格式的语言。 翻译过来大概叫 安全断言(标记)语言。  这里有两个点: 第一是“安全”, 第二是“断言(assertion)”。核心概念“断言”。  断言是什么?  就是做出判断的语言。比如一句话: 小明是超级管理员。 这就是一个断言。再来一个例子:小红没有权限读取根目录。这也是一个断言。SAML中大部分主要内容都是类似于:你是谁, 你有什么。。等等这些简单的语句。


二、基于SAML协议的ADSF单点登录集成

image.png

图来源: https://www.oasis-open.org/committees/download.php/11511/sstc-saml-tech-overview-2.0-draft-03.pdf

以上是用户认证的简单流程图,图中共有三个角色:

  1. Server Provider(SP):服务提供者,提供服务和资源
  2. Identity Provider(IDP):身份鉴别服务器,认证用户并生成saml断言,即ADFS服务器
  3. Client:用户访问服务的客户端,比如浏览器


三、ADSF单点接入

3.1、ADSF配置

首先在ADFS服务器,打开ADFS管理控制台,并定位到信任关系->信赖方信任,添加添加信赖方信任”,参考:https://support.zendesk.com/hc/en-us/articles/203663886-Setting-up-single-sign-on-using-Active-Directory-with-ADFS-and-SAML-Professional-and-Enterprise-

注意点:

  • 配置url步骤:配置信赖方SAML SSO服务url,url需为https的post协议,url为接入应用单点认证地址

image.png

  • 配置加密方式为:sha1
  • 传输数据不加密
  • 添加转换声明规则:需要添加ad域映射属性

image.png

image.png

3.2、ADSF配置获取及登录测试

配置文件获取地址示例:https://xxx/federationmetadata/2007-06/federationmetadata.xml,此配置文件用户签名及签名校验

ADSF登录地址示例:https://xxx/adfs/ls/idpinitiatedsignon.htm,访问此地址页面可以看到上一步骤配置的信赖方,登录后可以直接单点到信赖方配置的sso地址。


3.3、开发单点服务接口

开发集成图第7步也即配置的ssourl接口,使用openSAML开发:

    public HashMap<String, HashSet<String>> processResponse(String SAMLResponse) throws Exception {
        //获取saml response xml对象
        Response fetchedResponse = fetchResponse(SAMLResponse);
        Assertion assertion = fetchedResponse.getAssertions().get(0);
        Signature idpSignature = assertion.getSignature();
        HashMap<String, HashSet<String>> claimsContainer = getFieldsFromAssertion(assertion);
        
        if (idpSignature == null)
            throw new RuntimeException("Cannot extract signature from the Identity Provider");
        else {
            //验签
            verifyIDP(idpSignature, "/Users/Downloads/federationmetadata.xml");
        }
        
        return claimsContainer;
    }
    
    public Response fetchResponse(String SAMLResponse) throws Exception {
        byte[] decodedB = Base64.decode(SAMLResponse);
        System.out.println(new String(decodedB));
        ByteArrayInputStream is = new ByteArrayInputStream(decodedB);

        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilderFactory.setNamespaceAware(true);
        DocumentBuilder docBuilder = documentBuilderFactory.newDocumentBuilder();

        Document document = docBuilder.parse(is);
        Element element = document.getDocumentElement();
    
        Unmarshaller unmarshaller = Configuration.getUnmarshallerFactory().getUnmarshaller(element);
        XMLObject xmlobj = unmarshaller.unmarshall(element);
        Response respObject = (Response) xmlobj;
        
        return respObject;
    }

    

3.3、搭建https服务,部署应用并测试

推荐文章:

系统配置-流程催办提醒配置
2021-02-25
O2OA平台设计了灵活的消息提醒数据交互方式,开发者可以根据自己的需要,来消费消息提醒数据,也可以将消息提醒数据接入到Kafka消息中间件来实现消息的准实时提醒
移动办公-将平台集成到阿里钉钉(DingTalk)
2021-02-25
O2OA平台拥有配套的原生开发的安卓和IOS移动APP,可以以微应用的方式集成到阿里钉钉,同步钉钉的企业通讯录作为本地组织人员架构,并且可以将待办等通知直接推送
开发知识-在PAAS平台上部署O2OA开发平台
2021-02-07
一、镜像制作1、将安装介质o2server-5.0.3-linux.zip上传至镜像制作服务器上。(上传目录为/paas/xxhpaas/moka/o2oa)2
平台维护-待办待阅数据的查询操作和管理
2021-02-26
O2OA提供平台数据维护应用,用于对平台应用类数据的维护操作,用户可以在应用市场选择安装平台维护应用。本篇主要简单介绍系统待办、已办、待阅、已阅数据的查询和维护
日志管理-平台日志文件说明
2021-02-25
O2OA平台有几种查看日志的方式,日志文件和日志查看器。本篇主要介绍如何将在O2OA中查询日志。
信息管理和企业信息栏目开发
2021-02-25
本篇主要使用实例开发的方式讲述如何在O2OA平台中开发一个简单的通知公告,包括栏目创建,分类设置,表单设计以及如何验证表单开发成果。
开发知识-Vue篇:在O2门户页面中使用Vue
2021-02-07
  在O2OA门户页面中使用Vue非常容易,本章我们介绍两个实例,来展示如何在门户页面中使用Vue。版本要求本文适用于如下版本:O2OA版本要求:5.1及以上版
云服务器-阿里云ECS服务器的端口启用
2021-02-07
O2OA成功启动后,有可能无法正常访问服务器,需要在ECS进行安全策略配置,开放端口:80、20020、20030在阿里云上完成O2OA平台部署,并且启动完成后
系统集成-SSO微软ADSF单点认证-AD域认证
2021-02-26
O2OA平台提供灵活的系统集成方案,让企业信息平台与各类第三方系统进行集成。本篇主要介绍如何在O2OA中使用微软ADSF单点认证的方案与其他系统实现单点登入。
服务集成-通过接口从第三方应用系统启动流程
2021-07-06
@服务集成@系统集成@流程启动@通过服务启动流程@服务包装O2OA允许用户自行修改源码或者增加源码来扩展系统服务,也可以包装功能更强的业务服务。本文主要介绍如何

results matching ""

    No results matching ""