在ADFS 2.0中发送没有encryption的NameID声明

我的服务提供者用一个NameIDPolicy标签发出一个SAML 2.0 AuthRequest,如下所示:

<samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/> 

这会导致ADFS 2.0正确发出一个SAML响应,其中包含一个由类似于此处find的规则创build的encryption的NameID标记

 <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"> MyeHAMeGLojBt7fcc2DQtntXXFka0kybkR42ZTitTUs=</NameID> 

然而,迄今为止这么好,我的服务提供者似乎并不了解encryption的NameID声明,并且期望它是未encryption的,同时将名称格式定义为transient

根据本文档 ,ADFS2.0将临时或持久NameID格式的请求视为隐私scheme(因此也称为encryption)

所以我的问题是:有没有什么办法让ADFS 2.0生成Format = transient的NameID声明,以及像这样的未encryption的NameID:

 <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">Joe</NameID> 

我们有一个客户,连接到我们的Web应用程序的问题。 我们想禁用encryption来帮助debugging我们正在接收的内容。 以下是他们用来禁用ADFS 2.0服务器上的encryption的步骤:

  • 点击开始
  • 单击pipe理工具
  • 单击Windows PowerShell模块
  • 然后,在Windows PowerShell命令提示符处,键入以下内容:

     set-ADFSRelyingPartyTrust –TargetName “target” –EncryptClaims $False 

我解决这个问题的方式是这样的:

  1. 创build一个从AD中提取UPN的规则
  2. 创build一个转换规则,将传入声明types: UPN转换为传出声明types: Name ID然后从“传出名称ID格式”下拉列表中selecttransient名称标识格式

这导致AD以所需的格式发送NameID:
<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">Joe</NameID>

(如果有人有更好的解决scheme,我会留下这个问题'没有回答'一段时间。