1

私はAzure ACS Labsと協力して、 FederatedServiceCredentialsを使用してアクティブ フェデレーションのユーザーを認証しています。ここで、WCF サービス内からユーザーのクレームにアクセスしたいと考えています。

この記事によると、クレームはリクエストスレッドによってアクセスされます...誰かがそれが何を意味するのか説明または実証できますか?

4

1 に答える 1

2

リクエスト スレッドは、サーバー上でサービス API を実行しているスレッドです。そのスレッド (サービス API 内) から、Thread.CurrentPrincipal.Identity にアクセスできます。これは、STS によって付与されたクレームを含む ClaimsIdentity になります。例えば:

 class MyService:IService
 {
   // code running on wcf server
   bool AdminOnlyApi()
   {    
     var identity = Thread.CurrentPrincipal.Identity as ClaimsIdentity;

     // fail all non admin callers.
     if (!identity.Claims.Exists(c=>c.ClaimType=="role" && c.Value=="Admin"))
     {
        throw new SecurityException("Access is denied.");
     }
     return True;
   }  
 }
于 2011-04-01T06:22:57.613 に答える