本文场景: 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. pjax 历史管理 jQuery.History.js

    更新 http://www.bootcdn.cn/jquery.pjax/ 简介 pjax是一个jQuery插件,使用ajax和pushState技术提供快速的浏览体验与真正的永久链接.网页标题.以及 ...

  2. Javascript 插件统一的实现步骤

    步骤: // 1. 定义立即调用的函数 +function($){ "use strict"; //使用严格模式ES5支持 //后续步骤 // 2. xx 插件类及原型方法的定义 ...

  3. 【摘抄】Application.StartupPath和System.Environment.CurrentDirectory的区别

    System.Environment.CurrentDirectory的含义是获取或设置当前工作路径,而Application.StartupPath是获取程序启动路径,表面上看二者没什么区别,但实际 ...

  4. LinqToSql和ASP.NET Entity FrameWork 中使用事务

    ASP.NET Entity FrameWork中: int flag = -1; if (this.URPmanagementEntities1.Connection.State != System ...

  5. python 循环、循环设计、循环对象

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 1.循环 循环用于重复执行一些程序块.从上一讲的选择结构,我们已经看到了如何用缩进 ...

  6. NOJ1066-堆排序

    堆排序 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte总提交 : 414            测试通过 : 220  比 ...

  7. 窗体皮肤实现 - 实现简单Toolbar(六)

    自定义皮肤很方便,基础开发的工作也是很大的.不过还好一般产品真正需要开发的并不是很多.现在比较漂亮的界面产品都会有个大大的工具条. Toolbar工具条实现皮肤的方法还是可以使用Form的处理方案.每 ...

  8. Linux下mysql自动备份

    #!/bin/bashDATE=`date +%Y-%m-%d-%H:%M -d -3minute`USER=rootPASSWORD=mayboBACKUP_DIR='/home/mysqlbak/ ...

  9. oracle 临时表空间

    环境: OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3. ...

  10. [原创]PostgreSQL中十进制、二进制、十六进制之间的相互转换

    在PostgreSQL中,二进制.十进制.十六进制之间的转换是非常方便的,如下: 十进制转十六进制和二进制 mydb=# SELECT to_hex(10); to_hex -------- a (1 ...