2013-01-18 14 views
6

.NET 4.0およびWIF 3.5(1.0?)で作成されたアプリケーションがあります。私はアプリを.NET 4.5にアップグレードしたので、WIF 4.5を使用するように変換しています。私はすべてのコード変更を行い、設定の設定で戦っています。私の現在のジレンマは、<claimTypeRequired>要素です。 this documentationによれば、<identityConfiguration>の子でなければなりませんが、私は私の設定は、このWindows Identity Foundation 4.5構成

<system.identityModel> 
    <identityConfiguration> 
    <claimTypeRequired> 
     ... 
    </claimTypeRequired> 

のように見えるように変更したときに、私はちょうどコメントするなら、私は、実行時

Parser Error Message: Unrecognized element 'claimTypeRequired'. 

で次のエラーを取得します<claimTypeRequired>ブロック私はそのエラーを過ぎてしまいましたが、私は別の問題を提示しています。私たちは、次のような構成

<securityTokenHandlerConfiguration> 
    <maximumClockSkew value="1" /> 
</securityTokenHandlerConfiguration> 

でもmaximumClockSkewを言及していない以前の参照設定マニュアルを経由して、既存のアプリケーションにmaximumClockSkewを変更していました。私は何が起こるかを見るためにそれを残そうと思った。何が起こることは

Parser Error Message: Property 'maximumClockSkew' is not a ConfigurationElement. 

あるしかし、私はJustDecompileを使用してSecurityTokenHandlerConfigurationElementクラスを見たとき、私はプロパティを見ることができます:そこにあることを期待しているよう

[ConfigurationProperty("maximumClockSkew", IsRequired=false, DefaultValue="00:05:00")] 
[IdentityModelTimeSpanValidator(MinValueString="00:00:00")] 
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))] 
public TimeSpan MaximumClockSkew... 

だから、そうです。

これは、マイクロソフトが実際に私たちにこのようなものを使用させたくないようなものです。

答えて

0

あなたは、これはそれはそれはここで35分の値に設定する作品コンフィグ

<securityTokenHandlerConfiguration saveBootstrapContext="true" maximumClockSkew="00:35:00" > 

でそれを設定するための答えである、ほぼ接近していました。 HH:MM:、設定ファイルの先頭に

置く:あなたがXMLでclaimTypeRequired属性については、すでに判明していない場合はところで、SS

4

ここでは、resharperのIdentityConfigurationElementを逆コンパイルします。 claimtyprecquiredはもはやこの要素のメンバーではありません。 claimTypeRequiredは、Microsoftの文書に記載されているにもかかわらず、スキーマの一部ではないようです。

// Type: System.IdentityModel.Configuration.IdentityConfigurationElement 
// Assembly: System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
// Assembly location: C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.IdentityModel.dll 

using System; 
using System.ComponentModel; 
using System.Configuration; 
using System.Runtime; 

namespace System.IdentityModel.Configuration 
{ 
    /// <summary> 
    /// Represents an &lt;identityConfiguration&gt; element in a configuration file. This class cannot be inherited. 
    /// </summary> 
    public sealed class IdentityConfigurationElement : ConfigurationElement 
    { 
    /// <summary> 
    /// Initializes a new instance of the <see cref="T:System.IdentityModel.Configuration.IdentityConfigurationElement"/> class. 
    /// </summary> 
    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] 
    public IdentityConfigurationElement(); 
    /// <summary> 
    /// Gets or sets the name of the identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// The name of the identity configuration. 
    /// </returns> 
    [ConfigurationProperty("name", Options = ConfigurationPropertyOptions.IsKey)] 
    [StringValidator(MinLength = 0)] 
    public string Name { get; set; } 
    /// <summary> 
    /// Gets the <see cref="T:System.IdentityModel.Configuration.AudienceUriElementCollection"/> that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// The collection of audience URIs that are configured for this identity configuration element. 
    /// </returns> 
    [ConfigurationProperty("audienceUris", IsRequired = false)] 
    public AudienceUriElementCollection AudienceUris { get; } 
    /// <summary> 
    /// Gets or sets the <see cref="T:System.IdentityModel.Configuration.IdentityModelCachesElement"/> that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// The element that configures the token replay cache and the session security token cache for this identity configuration element. 
    /// </returns> 
    [ConfigurationProperty("caches", IsRequired = false)] 
    public IdentityModelCachesElement Caches { get; set; } 
    /// <summary> 
    /// Gets or sets the <see cref="T:System.IdentityModel.Configuration.X509CertificateValidationElement"/> that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// The element that configures the certificate validator and its properties for this identity configuration element. 
    /// </returns> 
    [ConfigurationProperty("certificateValidation", IsRequired = false)] 
    public X509CertificateValidationElement CertificateValidation { get; set; } 
    /// <summary> 
    /// Gets or sets the claims authentication manager that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// A custom type element that specifies the <see cref="T:System.Type"/> of the claims authentication manager. The type must derive from <see cref="T:System.Security.Claims.ClaimsAuthenticationManager"/>. 
    /// </returns> 
    [ConfigurationProperty("claimsAuthenticationManager", IsRequired = false)] 
    public CustomTypeElement ClaimsAuthenticationManager { get; set; } 
    /// <summary> 
    /// Gets or sets the claims authorization manager that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// A custom type element that specifies the <see cref="T:System.Type"/> of the claims authorization manager. The type must derive from <see cref="T:System.Security.Claims.ClaimsAuthorizationManager"/>. 
    /// </returns> 
    [ConfigurationProperty("claimsAuthorizationManager", IsRequired = false)] 
    public CustomTypeElement ClaimsAuthorizationManager { get; set; } 
    /// <summary> 
    /// Gets or sets the <see cref="T:System.IdentityModel.Configuration.IssuerNameRegistryElement"/> that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// The element that configures the issuer name registry for this identity configuration element. 
    /// </returns> 
    [ConfigurationProperty("issuerNameRegistry", IsRequired = false)] 
    public IssuerNameRegistryElement IssuerNameRegistry { get; set; } 
    /// <summary> 
    /// Gets or sets the issuer token resolver that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// A custom type element that specifies the <see cref="T:System.Type"/> of the issuer token resolver. The type must derive from <see cref="T:System.IdentityModel.Selectors.SecurityTokenResolver"/>. 
    /// </returns> 
    [ConfigurationProperty("issuerTokenResolver", IsRequired = false)] 
    public CustomTypeElement IssuerTokenResolver { get; set; } 
    /// <summary> 
    /// Gets or sets the maximum clock skew that is configured for this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// The maximum clock skew. 
    /// </returns> 
    [TypeConverter(typeof (TimeSpanOrInfiniteConverter))] 
    [ConfigurationProperty("maximumClockSkew", DefaultValue = "00:05:00", IsRequired = false)] 
    [IdentityModelTimeSpanValidator(MinValueString = "00:00:00")] 
    public TimeSpan MaximumClockSkew { get; set; } 
    /// <summary> 
    /// Gets or sets a value that indicates whether to save the bootstrap context in claims identities and session security tokens created by the handlers configured in this identity collection. 
    /// </summary> 
    /// 
    /// <returns> 
    /// true to save the <see cref="T:System.IdentityModel.Tokens.BootstrapContext"/>; otherwise, false. 
    /// </returns> 
    [ConfigurationProperty("saveBootstrapContext", DefaultValue = false, IsRequired = false)] 
    public bool SaveBootstrapContext { get; set; } 
    /// <summary> 
    /// Gets or sets the service token resolver that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// A custom type element that specifies the <see cref="T:System.Type"/> of the service token resolver. The type must derive from <see cref="T:System.IdentityModel.Selectors.SecurityTokenResolver"/>. 
    /// </returns> 
    [ConfigurationProperty("serviceTokenResolver", IsRequired = false)] 
    public CustomTypeElement ServiceTokenResolver { get; set; } 
    /// <summary> 
    /// Gets or sets the <see cref="T:System.IdentityModel.Configuration.TokenReplayDetectionElement"/> that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// The element that specifies whether token replay detection is enabled and specifies the maximum expiration period for tokens in the token replay cache. 
    /// </returns> 
    [ConfigurationProperty("tokenReplayDetection", IsRequired = false)] 
    public TokenReplayDetectionElement TokenReplayDetection { get; set; } 
    /// <summary> 
    /// Gets or sets the <see cref="T:System.IdentityModel.Configuration.SecurityTokenHandlerSetElementCollection"/> that is associated with this identity configuration element. 
    /// </summary> 
    /// 
    /// <returns> 
    /// The security token handler collections configured for this identity configuration element.. 
    /// </returns> 
    [ConfigurationProperty("", Options = ConfigurationPropertyOptions.IsDefaultCollection)] 
    public SecurityTokenHandlerSetElementCollection SecurityTokenHandlerSets { get; } 
    } 
} 
+0

それは素晴らしいです。 System.IdentityModel.Services.Serialization.ConfigurationConstantsにはまだ定数がありますが、それを表す内部クラスはまだ存在します(System.IdentityModel.Services.Serialization.ClaimTypeRequiredElement)。本当に重要ではありませんが、これはMaximumClockSkewよりも懸念事項ではありませんでした。 –

+0

あなたはCraig Wの下でオプションを試すことができます。それはそれを構成可能にし、ハードコーディングなし –

2

、あなたは回避策としてこれを使用することができますこの:

<section name="system.identityModel.services.serialization" type="System.IdentityModel.Services.Serialization , System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 

、その後claimTypeRequiredの周りに、ここでの例です:

<system.identityModel.services.serialization> 
     <claimTypeRequired> 
      <claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" optional="true"/> 
      <claimType type="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" optional="true"/> 
     </claimTypeRequired> 
    </system.identityModel.services.serialization> 

敬具、

関連する問題