1

編集:解決策を見つけました。最後を見てください。

現在、エミュレーターで実行している Azure 用の ASP.NET Web ロールがあります。Google と Live ID を ID プロバイダーとして使用できるように、デフォルトの実装を変更しました。Identity & Access Extension を使用して、Web.Config ファイルを調整しました。

問題は、ClaimsPrincipal としてユーザーを介してクレームにアクセスすると、ID プロバイダー (Google など) からのクレームのみが表示されることです。証明書利用者プログラム (ACS ポータルで定義) のルール グループには、関連付けられたパススルー ルールすらありませんが、それらの要求は取得されます。一方、クレーム ルールを追加して、Google から提供された名前クレーム タイプをカスタム出力値に変更しましたが、コード ビハインドからは Google からの値しか表示されません。

私の質問: ID プロバイダーの要求に基づいて発行者 (STS) からトークンを発行できるようにするには、どうすればよいですか? また、コードからこのトークンにアクセスするにはどうすればよいですか?

私が使用している: Visual Studio 2012 .NET Framework 4.5

私の Web.config の一部:

<system.web>    
  <authentication mode="None" />    
  <httpRuntime targetFramework="4.5" requestValidationMode="4.5" />
...
</system.web>   
...  
<appSettings>
  <add key="ida:FederationMetadataLocation" value="https://mynamespace.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml" />
  <add key="ida:Issuer" value="https://mynamespace.accesscontrol.windows.net/v2/wsfederation" />
  <add key="ida:ProviderSelection" value="ACS" />
</appSettings>
<system.webServer>
  <modules>
    <remove name="FormsAuthentication" />
    <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=bla" preCondition="managedHandler" />
    <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=bla" preCondition="managedHandler" />      
  </modules>
</system.webServer>
<system.identityModel>
  <identityConfiguration>
    <audienceUris>
      <add value="http://127.0.0.1:7777/" />
    </audienceUris>
    <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=bla">
      <trustedIssuers>
        <add thumbprint="myRelyingPartyThumbprint(from ACS Portal)" name="https://mynamespace.accesscontrol.windows.net/" />
      </trustedIssuers>
    </issuerNameRegistry>
    <certificateValidation certificateValidationMode="None" />
  </identityConfiguration>
</system.identityModel>
<system.identityModel.services>
  <federationConfiguration>
    <cookieHandler requireSsl="false" />
    <wsFederation passiveRedirectEnabled="true" issuer="https://mynamespace.accesscontrol.windows.net/v2/wsfederation" realm="http://127.0.0.1:7777/" requireHttps="false" />
  </federationConfiguration>

ユーザーをログイン ページにリダイレクトするために使用される URL は次のとおりです。 3a7777%2f "

私のテストルールは次のようになります。

ここに画像の説明を入力

解決策:問題は、ACS のレルムとして「 http://localhost:7777/ 」を持っていたのに、Identity & Access ツールで 127.0.0.1 を指定したことです。私のプログラムが ID プロバイダーを選択するために ACS を要求したとき、WebRole11 という名前の証明書利用者が、パススルー ルールを含む 127.0.0.1 に対して自動的に作成されました。自動的に作成された Relying Party Application Settings が私の代わりに使用されたため、私のカスタム ルールは適用されませんでした。

4

0 に答える 0