从Identity和Access Tools使用LocalSTS时的多个声明值

时间:2012-10-24 06:35:25

标签: visual-studio-2012 wif

作为从VS 2010迁移到VS 2012的一部分,我们已经开始在开发阶段使用Identity and Access Tools中的LocalSTS作为STS。它很容易设置,但我们确实遇到了一个问题,这就是将其配置为在生成的令牌中包含多个声明类型的声明值。典型配置可能如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="localSTSConfiguration" type="System.IdentityModel.Tools.LocalSTS.LocalSTSConfiguration, LocalSTS, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <localSTSConfiguration port="13248" signingCertificate="LocalSTS.pfx" signingCertificatePassword="LocalSTS" issuerName="LocalSTS" tokenFormat="Saml11">
    <claims>
      <add type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" displayName="Name" value="Terry" />
      <add type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" displayName="Surname" value="Adams" />
      <add type="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" displayName="Role" value="Member" />
      <add type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" displayName="Email" value="terry@contoso.com" />
      <add type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" displayName="Name Identifier" value="terry@contoso.com" />
    </claims>
  </localSTSConfiguration>
</configuration>

以上操作没有问题,但如果我想让用户成为会员角色和管理员角色的成员,我该如何表达。我尝试了以下内容,但它只包含给定声明类型的最后一个指定声明值。因此,在给定以下配置的情况下,用户将只是管理员角色的成员,而不是成员角色。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    ...
  </configSections>
  <startup>
    ...
  </startup>
  <localSTSConfiguration port="13248" signingCertificate="LocalSTS.pfx" signingCertificatePassword="LocalSTS" issuerName="LocalSTS" tokenFormat="Saml11">
    <claims>
      ...
      <add type="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" displayName="Role" value="Member" />
      <add type="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" displayName="Role" value="Administrator" />
      ...
    </claims>
  </localSTSConfiguration>
</configuration>

1 个答案:

答案 0 :(得分:1)

似乎直到LocalSTS dll版本4(包含在Identity and Access Tool 1.01中)多个声明值都不可能,但使用LocalSTS dll版本5(包含在Identity and Access Tool 1.02中)已添加此功能。这些工具的1.02版本于10月23日发布,可以在http://visualstudiogallery.msdn.microsoft.com/e21bf653-dfe1-4d81-b3d3-795cb104066e?SRC=VSIDE找到。