8

もともと.NET4.0とWIF3.5(1.0?)で構築されたアプリケーションがあります。アプリを.NET4.5にアップグレードしたため、WIF4.5を使用するように変換中です。私はすべてのコード変更を行い、構成設定と戦ってきました。私の現在のジレンマは、<claimTypeRequired>要素にあります。このドキュメントによると、これは<identityConfiguration>の子である必要がありますが、構成を次のように変更すると

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

実行時に次のエラーが発生します

Parser Error Message: Unrecognized element 'claimTypeRequired'.

<claimTypeRequired>ブロックをコメントアウトすると、そのエラーは発生しますが、別の問題が発生します。次の構成を使用して、既存のアプリケーションのmaximumClockSkewを変更しました

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

以前に参照した構成ドキュメントには、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...

ですから、そこにあることを期待しているようです。

マイクロソフトが実際にこのようなものを使用することを望んでいないようです。

4

3 に答える 3

2

ちなみに、XML の claimTypeRequired 属性についてまだわからない場合は、次の回避策を使用できます。

構成ファイルの先頭に、次のように記述します。

<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>

敬具、

于 2014-07-02T14:11:32.263 に答える
1

あなたはほとんど近かったですこれは設定でそれを設定するための答えです

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

ここで 35 分の値に設定すると機能します。時:分:秒

于 2014-05-31T18:09:39.080 に答える