系统集成之用户统一登录( LDAP + wso2 Identity Server)
本文场景: 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这个强大的开源系列之前,我曾经尝试过 自己手写代码构建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)的更多相关文章
- (10)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot+Identity Server
用 JWT 机制实现验证的原理如下图: 认证服务器负责颁发 Token(相当于 JWT 值)和校验 Token 的合法性. 一. 相关概念 API 资源(API Resource):微博服务器接口. ...
- Solaris10安装配置LDAP(iPlanet Directory Server )
Solaris10安装光盘自带了iPlanet Directory Server安装包,系统管理员可以利用iPlanet Directory Server在Solaris系统创建一个LDAP Serv ...
- Confluence 6 使用 LDAP 授权连接一个内部目录 - 拷贝用户到登录
在登录时拷贝用户(Copy User on Login) 这个选项在用户尝试登录的时候将会被触发.如果这个选择框被选择的话,当用户使用 LDAP 授权的用户名和密码登录系统的时候,用户将会在内部目录自 ...
- .net core使用Ocelot+Identity Server统一网关验证
源码下载地址:下载 项目结构如下图: 在Identity Server授权中,实现IResourceOwnerPasswordValidator接口: public class IdentityVal ...
- Django开发文档-域用户集成登录
项目概述: 一般在企业中,用户以WINDOWS的域用户统一的管理,所以以Django快速开发的应用,不得不集成AD域登录. 网上一般采用django-python3-ldap的库来做集成登录,但是本方 ...
- IIS配置域用户自动登录
1.首先确定IIS所在计算机是否已添加到域中:右击计算机->属性,在计算机名称,域,工作组设置中可看到计算机所在的域,若没有,可点击更改设置,再点击更改,选择要绑定的域即可(需要用域账户登录). ...
- SQLServer中用户 'sa' 登录失败解决办法
今天下午,很奇怪的网站突然就打不开了,报错如下: “/”应用程序中的服务器错误. 用户 'sa' 登录失败. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误 ...
- shiro实现APP、web统一登录认证和权限管理
先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制.好的,那么问题来了w ...
- SSO-单点统一登录系统的设计与实现
本文主要基于web类应用展开讨论,提供的是一种通用机制和方法,所以不论何种技术栈都可进行相应的具体实现. 实现目标 可以在相同或跨域环境下完成各应用的统一登录/注销 方案原理 本质上是采用了web应用 ...
随机推荐
- Python pass 语句使用示例
Python pass 语句的使用方法示例.Python pass是空语句,pass语句什么也不做,一般作为占位符或者创建占位程序,是为了保持程序结构的完整性,pass语句不会执行任何操作,比如: P ...
- php设计模式之Proxy(代理模式)和Facade(外观)设计模式
Proxy(代理模式)和Facade(外观)设计模式它们均为更复杂的功能提供抽象化的概念,但这两种实现抽象化的过程大不相同 Proxy案例中,所有的方法和成员变量都来自于目标对象,必要时,该代理能够对 ...
- 通过Eclipse创建SQLite数据库
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database ...
- VLC 重新编译第三方库的预编译包contrib
VLC的引用了很多开源的第三方库,均放到VLC目录下的contrib中(本来开始编译是2.1.x以上版本,以前或以后可能会变化),在Windows版本编译中,contrib文件夹中仅仅下载VLC官网上 ...
- 【转】利用DCC32实现命令行批量编译
*.dof [Compiler] A=1 B=0 C=1 D=1 E=0 F=0 G=1 H=1 I=1 J=1 K=0 L=1 M=0 N=1 O=1 P=1 Q=0 R=0 S=0 T=0 U=0 ...
- Linux之uboot分析与移植20160601
说一下uboot分析与移植: 1.下载.建立source insight工程.编译.烧写.如果无运行分析原因 tar xjf u-boot-2012.04.01.tar.bz2 cd u-boot-2 ...
- ruby 程序中的文字编码
1,问题 在写一个统计代码行数的脚本时遇到一个问题: 代码: file_name = "code.rb"c = 0File.foreach(file_name) do |x| ne ...
- 成功完成Moses Manual中BaseLineSystem
终于把这个破法语句子翻译出来了,各种耗时,bug,弄了一天,明天争取看完详细的翻译教程! 而且还要学习中文分词,晚安,Moses!
- poj 2777 Count Color
题目连接 http://poj.org/problem?id=2777 Count Color Description Chosen Problem Solving and Program desig ...
- Android程序完全退出的三种方法
很多网友可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现. 首 ...