私はAzure ACS Labsと協力して、 FederatedServiceCredentialsを使用してアクティブ フェデレーションのユーザーを認証しています。ここで、WCF サービス内からユーザーのクレームにアクセスしたいと考えています。
この記事によると、クレームはリクエストスレッドによってアクセスされます...誰かがそれが何を意味するのか説明または実証できますか?
私はAzure ACS Labsと協力して、 FederatedServiceCredentialsを使用してアクティブ フェデレーションのユーザーを認証しています。ここで、WCF サービス内からユーザーのクレームにアクセスしたいと考えています。
この記事によると、クレームはリクエストスレッドによってアクセスされます...誰かがそれが何を意味するのか説明または実証できますか?
リクエスト スレッドは、サーバー上でサービス 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;
}
}