本文场景: LDAP + wso2 Identity Server + asp.net声明感知 场景 ,假定读者已经了解过ws-*协议族,及 ws-trust 和 ws-federation.

随着开源技术的发展,越来越多的优秀开源产品将加入到我们常规的业务系统,为了避免重复造轮子(实际上自己造的轮子质量非常差),我们最快的方法就是集成优秀的开源项目为我所用.

下面来说说集成中的挑战之一: 用户认证问题.

本人是一个在ASP.NET下工作的码农,在2010年的时候研究过windows identity foundation(下面简称WIF)技术,第一次感受到了声明式认证方案的魅力.从此对声明式认证非常狂热. 声明式认证有两个主要的参与者: RP 与 STS ,详见:http://msdn.microsoft.com/zh-cn/library/ee517293.aspx .

若干RP应用 信任统一的STS(当然也可以STS再信任STS,场景较复杂),来实现单点登录. 谈到单点登录,相关的技术方案太多,如CAS,不过就SOA生态下,还是习惯ws-*级别的安全.所以我下面来着重讲解如何构建STS及使用声明感知的身份验证.

对做过sharepoint的朋友应该非常熟悉 , sharepoint就采用了WIF技术,可以将ADFS做为STS进行企业内部统一身份认证,那么如果我们工作环境是linux怎么办呢? 开源的东西向来不怎么依赖windows. 那们我们需要利用下LDAP ,LDAP本身是一个协议,实现此协议的有:

有了跨平台的目录服务,我们难道是直接用? 这当然是需要写很多代码的...我们还需要一个更加强大的产品包装一下LDAP,如 :

WSO2 identity server

在发现WSO2这个强大的开源系列之前,我曾经尝试过 自己手写代码构建STS(要具备安全领域技术栈的知识,如证书,签名等),后来发现用WIF框架手写STS做个简单的demo还是很容易,但是做到兼容万家产品可不是那么容易,毕竟各种开源项目使用的认证协议不一样,于是我找到了一个相当出色的开源项目:

Thinktecture.IdentityServer (c#开发的)

此项目支持的协议(Endpoint)很多了,比如OAUTH ,ws-federation hrd,还可以扩展多种标识服务提供器(如ADFS)....

此项目因为界面看起来很丑陋,而且目测感觉只是试验型项目最终被我抛弃, 俗话说旧的不去新的不来,正是因为我抛弃了它,目光放得更加远了,经常各种资源搜集,我碰到了上面提到的 WSO2 Identity Server!!!!

WSO2旗下有很多产品,详情可到官网上了解,貌似都开源免费.是世界顶级SOA服务商.(吹捧至此为止 ^_^)

WSO2的开源产品安装极傻瓜,只要双击bat文件就能运行,而且不用任何配置就能看得到界面,对于我这种java水平很差的.NET程序员来说可谓是太友好了. 你可能在思考,难道都不用配置数据库的么? 实际上它默认用了一款嵌入式数据库H2 database , 额,我个人只知道微软有个SQLCE,终于见世面了.....

WSO2 identity server 文档里面囊括了各种安全相关的字眼,如OAuth,openid,ldap,sts,证书,.....,好吧我们现在来说说怎么用它吧.

它内置了我上面介绍的apacheds LDAP ,默认把用户保存到此,你可以在<wso2is_ROOT>\repository\conf\user-mgt.xml 下找到它的连接参数,两样你可以使用LDAPAdmin这类LDAP客户端工具连接进去查看,关于LDAPAdmin的使用见:http://www.pfeng.org/archives/564

关于如何使用它做 被动STS详见: http://wso2.com/library/articles/2011/12/configuring-wso2-identity-server-passive-sts-aspnet-client/

稍后再补充,

系统集成之用户统一登录( LDAP + wso2 Identity Server)的更多相关文章

  1. (10)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot+Identity Server

    用 JWT 机制实现验证的原理如下图:  认证服务器负责颁发 Token(相当于 JWT 值)和校验 Token 的合法性. 一. 相关概念 API 资源(API Resource):微博服务器接口. ...

  2. Solaris10安装配置LDAP(iPlanet Directory Server )

    Solaris10安装光盘自带了iPlanet Directory Server安装包,系统管理员可以利用iPlanet Directory Server在Solaris系统创建一个LDAP Serv ...

  3. Confluence 6 使用 LDAP 授权连接一个内部目录 - 拷贝用户到登录

    在登录时拷贝用户(Copy User on Login) 这个选项在用户尝试登录的时候将会被触发.如果这个选择框被选择的话,当用户使用 LDAP 授权的用户名和密码登录系统的时候,用户将会在内部目录自 ...

  4. .net core使用Ocelot+Identity Server统一网关验证

    源码下载地址:下载 项目结构如下图: 在Identity Server授权中,实现IResourceOwnerPasswordValidator接口: public class IdentityVal ...

  5. Django开发文档-域用户集成登录

    项目概述: 一般在企业中,用户以WINDOWS的域用户统一的管理,所以以Django快速开发的应用,不得不集成AD域登录. 网上一般采用django-python3-ldap的库来做集成登录,但是本方 ...

  6. IIS配置域用户自动登录

    1.首先确定IIS所在计算机是否已添加到域中:右击计算机->属性,在计算机名称,域,工作组设置中可看到计算机所在的域,若没有,可点击更改设置,再点击更改,选择要绑定的域即可(需要用域账户登录). ...

  7. SQLServer中用户 'sa' 登录失败解决办法

    今天下午,很奇怪的网站突然就打不开了,报错如下: “/”应用程序中的服务器错误. 用户 'sa' 登录失败. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误 ...

  8. shiro实现APP、web统一登录认证和权限管理

    先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制.好的,那么问题来了w ...

  9. SSO-单点统一登录系统的设计与实现

    本文主要基于web类应用展开讨论,提供的是一种通用机制和方法,所以不论何种技术栈都可进行相应的具体实现. 实现目标 可以在相同或跨域环境下完成各应用的统一登录/注销 方案原理 本质上是采用了web应用 ...

随机推荐

  1. input实时监听(input oninput propertychange onpropertychange)

    本文实例讲述了js与jquery实时监听输入框值的oninput与onpropertychange方法.分享给大家供大家参考.具体如下: 最近做过一个项目,需求是下拉框里自动匹配关键字,具体细节是实时 ...

  2. qemu-kvm简单使用

    qemu-kvm主要有以下几个选项: -snapshot: 创建快照 -m: 指定内存大小 -smp: 指定处理器个数 -cpu: 指定CPU类型 -name: 设置虚拟机名称 -vnc: 使用vnc ...

  3. AsyncTask的简单使用

    package com.zzw.life; import android.app.Activity; import android.os.AsyncTask; import android.os.Bu ...

  4. MongoDB探索之路(一)——入门

    1.MongoDB和传统关系型数据库的比较  2.面向文档的 NoSQL 数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能.  3.MongoDB可以作为日志分 ...

  5. 第八章 管理类型(In .net4.5) 之 加强封装

    1. 概述 本章内容包括 访问控制符.属性 和 显式接口实现. 2. 主要内容 2.1 访问控制符 封装的核心是隐藏信息.访问控制符用来实现类型成员的访问控制. C#的访问控制符有:public, i ...

  6. python实现 _ 图书馆书籍到期之前_自动邮件提醒

    一共两个脚本: 第一个是[借书完毕以及借书信息有变更(续借等)]的时候需要执行的脚本:实现模拟登陆,同时最新的借书信息的下载到本地文本:之所以没有这样做,是因为如果每次爬取一遍的话,需要每次输入一遍验 ...

  7. Ztack学习笔记(4)-系统网络分析

    协调器的组网,终端设备和路由设备发现网络以及加入网络 //第一步:Z-Stack 由 main()函数开始执行,main()函数共做了 2 件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统 ...

  8. bat完美关机命令

    @echo off title OLIVER-COMPUTER mode con cols= lines= color 0d shutdown /a >nul >nul ver > ...

  9. oracle 表空间和表 read only迁移后不再read only

    DB :  11.2.0.3.0 1.将tablespace read only , 不允许再对表进行update.insert操作,测试dmp到另一个用户.表空间后是否可以update.insert ...

  10. linux下更改文件夹所属用户和用户组

    改变所属用户组:chgrp -R users filename -R是为了递归改变文件夹下的文件和文件夹,users是要改为的用户组名称,filename是要改变的文件夹名称 ============ ...