ADFS 2.0 配置简介 PartⅢ – 声明规则语言

上一篇我们最终把 ADFS 与应用之间的信任关系建立起来了,但是应用接收到的声明信息只有默认的两个,这次我们就来学学怎么配置声明。

一.声明存储配置

  1. ADFS 目前默认支持三种方式的声明值存储,另外还有自定义存储,不过我没去研究

二.编辑预定义声明

三.编写自己的定制声明

如果你需要编写自定义的声明规则,那么你需要掌握一种描述声明的语法,很简单的,首先让我们看看上边配置的电子邮件声明生成的语句

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> 
issue(store = "Active Directory", type = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"),
query = ";mail;{0}", param = c.Value);

可以看到符号 “=>”将声明语句分隔成两部分,第一句的 “c:[Type == ….]”是条件,第二句的 “issue(store=…)”是发布,意思是说只有当条件为真才会发布该声明,如果条件不填写,默认为真,直接发布声明,比如我们可以发布一个公司名称的声明如下

=> issue(type = ("http://test.com/company"),value = "CHK");

语句可以使用多个条件,,中间使用 && 连接,比如以下声明要求手机号为 “123”和电子邮件为“[email protected]”才发布角色声明

c1:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/phonenumber", Issuer == "AD AUTHORITY", Value == "123"]
&&
c2:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/emailaddress", Issuer == "AD AUTHORITY", Value == "[email protected]"]
 => issue(type = ("http://test.com/role"), value = "Unknow");

还可以变更声明的存储位置,使用特殊的查询语句,比如使用 SQL 存储声明的话,可以写出如下语句

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/accountname", Issuer == "AD AUTHORITY"]
=>
issue(store = "{SQL存储的名称,在自定义声明存储配置}", type = "http://test.com/phonenumber",
query = "Select phonenumber from UserDetail where userName = {0}", param = c.Value)

多个参数使用逗号隔开, “c.Value”其实取的就是条件语句中 “c”这个声明对象也即用户的账户名

另外这种声明语言还支持简单的几个函数,比如值以某个字符串开头,以某个字符串结尾等,这里就不详细赘述了。

我们另外看看一个比较有趣的关键字 add.

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/accountname", Issuer == "AD AUTHORITY", Value == "Administrator"]
=>
add(type = "http://test.com/role", value= "管理员")
c1:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/accountname", Issuer == "AD AUTHORITY", Value == "Administrator"]
&&
c2:[Type == "http://test.com/role"]
=>
issue(Claim = c2)

第一段声明使得用户名为 Administrator 的用户可以获得管理员角色的声明,类似的用法还可以用在标识用户的地区,比如北京就增加一个首都之类的声明,也是挺方便的。

最后再说两个比较常用的关键字 EXISTS 和 Not EXISTS,其实用法跟 SQL 语句一样啦

EXISTS([type == "http://test.com/emailaddress"])
=> issue(type = http://test.com/role, value = "Email User");
NOT EXISTS([type == "http://test.com/location"])
=> add(type = "http://test.com/location", value = "Unknown");

还有一些我没讲到的语法细节,有兴趣的可以去这篇博客看看,注意是英文的,当然我都能看懂您就别担心了。

ADFS 的基本配置大概就到这了,下次有机会讲讲多个公司间 ADFS 服务的配置,还有 ADFS 的代理以便员工外网访问,最好能把 ACS(社交服务账户如 Facebooke、GoogleAccount 之类与 ADFS 的集成) 也讲一下。

如果您等不及我的博客,这里推荐一本 PDF 指导书籍,写得相当好,我大部分 ADFS 知识都是从上边看来的。

ADFS 2.0 配置简介 PartⅢ – 声明规则语言,布布扣,bubuko.com

时间: 2024-10-26 12:19:59

ADFS 2.0 配置简介 PartⅢ – 声明规则语言的相关文章

ADFS 2.0 配置简介 PartⅡ – 配置 ADFS 信任关系

ADFS 与应用程序间的各种验证是基于信任关系的,在 ADFS 服务器配置好要信赖的应用程序(以 URL 为标识)后,应用程序再通过指定认证服务器来将用户引导至 ADFS 登录页,登录完成后再将用户的信息使用 Cookie 加密发送到应用程序完成验证. 我们来配置一个应用程序试试,为了方便就使用 ASP.NET MVC 吧. 一 .配置应用程序 建立 ASP.NET MVC 应用程序,一路默认. 安装一个 Visual Studio 扩展插件,能帮助我们省很多功夫,如果你不想太深入ADFS配置文

ADFS 2.0 配置简介 PartⅠ – 安装ADFS

    Active Directory Federation Service 也即联盟身份认证服务是微软的单点登录解决方案 (SSO),配置步骤相当多,中文资料也比较少,写在这里希望对后来人有所帮助,语言使用的是中文系统,实际上使用英文可能部署起来更容易些,因为感觉翻译不是很好. 一些术语 Active Directory (AD)    活动目录,以目录的形式抽象管理服务器上的资源.用户.计算机等等,Windows Server 自带. Domain        计算机域,是比工作组更优秀

Exchange与ADFS单点登录 PART 6:Exchange声明规则配置

在上一篇中,我们已经完成了在ADFS中添加Exchange的信赖方信任,这一篇我们将接着来分享一下Exchange的声明规则配置. 首先,我们打开ADFS管理单元,然后展开ADFS-信任关系-信赖方信任,选中我们之前创建好的OWA的信赖方信任,然后单击右侧的编辑声明规则. 在颁发转换规则中单击添加规则. 在选择规则模板页,选择使用自定义规则发送声明. 然后在配置规则页,按照以下设置: 声明名称: ActiveDirectoryUserSID 自定义规则: c:[Type == "http://s

Windows Server 2016 安装及配置 ADFS 4.0

ADFS(Active Directory Federation Services),既活动目录联合服务.ADFS将活动目录拓展到Internet.要理解这一点,可以考虑一般活动目录设施的工作原理.当用户通过活动目录认证时,域控制器检查用户的证书.证明是合法用户后,用户就可以随意访问Windows网络的任何授权资源,而无需在每次访问不同服务器时重新认证.具体就不多介绍了.今天我们主要介绍的是Windows Server 2016下安装接配置ADFS 4.0. 我们需要注意的是:各版本的配置有不同

路由器NAT功能配置简介

CISCO NAT 配置(值得一看)                   路由器NAT功能配置简介 随着internet的网络迅速发展,IP地址短缺已成为一个十分突出的问题.为了解决这个问题,出现了多种解决方案.下面几绍一种在目前网络环境中比较有效的方法即地址转换(NAT)功能. 一.NAT简介 NAT(Network Address Translation)的功能,就是指在一个网络内部,根据需要可以随意自定义的IP地址,而不需要经过申请.在网络内部,各计算机间通过内部的IP地址进行通讯.而当内

Hadoop-2.0 目录简介

Hadoop-2.0 目录简介 一.目录结构 将下载的压缩包解压: 解压后文件夹如下: 二.各文件夹目录结构 1.bin:Hadoop2.0的最基本管理脚本和使用脚本所在目录.这些脚本是sbin目录下管理脚本的基础实现,我们可以直接用这些脚本管理和使用Hadoop. 2.etc:这个目录里的文件只要接触过Hadoop的人都很熟悉.Hadoop配置文件目录.首先是从Hadoop1.0继承来的三个文件core-site.xml.hdfs-site.xml.mapred-site.xml,然后还有一个

转: ZigBee/Z-Stack CC2530实现低功耗运行的配置简介

转: ZigBee/Z-Stack CC2530实现低功耗运行的配置简介http://bbs.elecfans.com/jishu_914377_1_1.html(出处: 中国电子技术论坛) 设备支持低功耗运行是ZigBee网络的一大特点,该特性借助CC2530芯片能够很好地体现出来.CC2530芯片有五种运行模式,分别为主动模式.空闲模式.PM1.PM2和PM3.主动模式是一般运行模式:空闲模式除了CPU内核停止运行外,其他和主动模式一样:PM1.PM2.PM3是低功耗运行模式,CC2530通

SpringMVC+Hibernate+Junit4+json基本框架近乎0配置

公司是做APP开发的,需要后台来提供接口,于是乎,这个任务就交给我,经过反复的尝试,学习和参考别人的demo,终于搭出自己还算满意的框架,SpringMVC+Sping3+Hibernate4+Junit4,没有使用Maven.下面一步一步的搭建吧! 首先是选择jar包,我把我用到的jar包上传到了网上,点我下载 我使用的事Eclipse,创建好webDynamic project之后,把lib直接粘贴到webcontent下就ok了! 第一步,配置web.xml,一切请求和初始化都是经过web

Java知多少(26)源文件的声明规则

当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则: 一个源文件中只能有一个public类. 一个源文件可以有多个非public类. 源文件的名称应该和public类的类名保持一致.例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java. 如果一个类定义在某个包中,那么package语句应该在源文件的首行. 如果源文件包含import语句,那么应该放在package语句和类定义之间.如果没有package语