本文场景: 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. asp.net mvc 用Redis实现分布式集群共享Session。

    1.这两天研究Redis搞分布式session问题,网上找的资料都是用ServiceStack.Redis来实现的,但是在做性能测试的时候发现最新的v4版本有限制每小时候最多请求6000次,因为官网开 ...

  2. jQuery在HTML文档加载完毕后自动执行某个事件;

    原来onchange=“fucntionname(parms)”: <select name="country" id="selCountries_{$sn}&qu ...

  3. mysql存储引擎(mysql学习六)

    存储引擎 现在只有InnoDB支持外键 上接着学习笔记五 class表中有外键,所以不能修改存储引擎 表类型   默认的服务器表类型,通过my.ini可以配置    Default-storage-e ...

  4. 通过Sql语句控制SQLite数据库增删改查

    person类属性有Intenger id,String name,Intenger  age,相应的构造方法和set get方法. package com.xh.tx.dao; import jav ...

  5. Linux获取用户主目录

    #!/usr/bin/python# -*- coding:utf-8 -*-import sysimport osclass get_home_path(object): def __init__( ...

  6. Why java main function is declared as static type?

    一个暂且说的过去的解释 The method is static because otherwise there would be ambiguity: which constructor shoul ...

  7. entityFramework使用 codefirst

    新建项目 用nuget安装entityFramework,Install-Package Entityframework 建一个model和context //[Table("Custome ...

  8. 使用Handler和Timer+Timertask实现简单的图片轮播

    布局文件就只放了一个简单的ImageView,就不展示了. 下面是Activity package com.example.administrator.handlerthreadmessagedemo ...

  9. poj 3641 Pseudoprime numbers

    题目连接 http://poj.org/problem?id=3641 Pseudoprime numbers Description Fermat's theorem states that for ...

  10. 2天驾驭DIV+CSS (基础篇)(转)

    这是去年看到的一片文章,感觉在我的学习中,有不少的影响.于是把它分享给想很快了解css的兄弟们. 基础篇[知识一] “DIV+CSS” 的叫法是不准确的[知识二] “DIV+CSS” 将你引入两大误区 ...