簡単な項に変換するRP-STSジュネーブの枠組み
-
03-07-2019 - |
質問
読み込み後にMSDN条(http://msdn.microsoft.com/en-us/magazine/2009.01.genevests.aspx)を実施するカスタムSTSのジュネーブの枠組みに私は少し戸惑のシナリオの対象である。このシナリオを図13に示すように、上記で参照されます。
私の質問はどのようなRPの開始を呼び出しRP-STSを通過するために、既に得られた債権からのIP-STS?どのような希望する方法DeleteOrder()が発生しない仕組みを導入の請求のための請求項からRP-STSに対応するための行動を主張している値を削除する権限の電話のかけ方は?この図には若干の誤の相互作用のRP-STSの政策エンジンのすべての債権は、矢印です。
この構造がでていないのには何が書かれているのかによるジュネーブ/WCFおよびそれをコード内のRPると思われるビット数にまとめることができたたな保護のDeleteOrder法PrincipalPermission需要の削除"許可"がいを求める役割第得してもらうの細粒の請求項の削除を行後です。
合いのポイント(ていないのでこの場合は対象のWeb)、お!
よろしくお願いします。
解決
私も同じ質問は、ジュネーブフォーラム http://social.msdn.microsoft.com/Forums/en/Geneva/thread/d10c556c-1ec5-409d-8c25-bee2933e85ea?prof=required ともするものである:
こんにちはDokie,
目の前を通りがかった私達はこの同じものを読んでいたらというものがあります。していることが特徴となっ考にどのようなシナリオを実施しているんだw/二つのアイデア:
RP実際に設定が必要請からRP-STS;RP-STSを必要とセキュリティトークンからジに記載されている価格はすべてある。その結果、対象の時の要求リソースのRP、連鎖によってRP-STS者の連鎖によってIPりません。後を認証すが、その回復となり、RP-STSアイデンティティの中心に債権へ変換するために、必要な認可判断をするためのものである。
RPが設定されていて、インタセプタ(例えば、AuthorizationPolicyの場合は、WCFサービスを横串で捉える"の話のアイデンティティ中心の請求項を作成しRSTを使用してWSTrustClient),することで、RP-STS、サービス拡大は、請求項に新しいていこうとすると、RPによる認可決定します。
こんに実施してだったかを探る二つのアイデアです。
HTH!
について
トラスペンサー
どんどん活かしていきたいオプション2の最初とを確認してくださいこの作品はそのうちの策定答えます。
他のヒント
私の状況営業。私の場合、広告FSではのサービスとカスタムSTSの資源がある。
すべてのウエブアプを使ったオリSTSが、その後ユーザーの訪問は、他のアプリケーションのreleated険なaddad再度のFS以降のユーザーが認証される。させるにはどうすればいいのでし又は要請に基本的な債権からのFS。
私が電話インターネットFSとActAs現を返します私の同定。覚えている代表団が可ルールの資格の呼び出しに使用すのFS.
string stsEndpoint = "https://<ADFS>/adfs/services/trust/2005/usernamemixed";
var trustChannelFactory = new WSTrustChannelFactory(new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential), stsEndpoint);
trustChannelFactory.Credentials.UserName.UserName = @"DELEGATE";
trustChannelFactory.Credentials.UserName.Password = @"PASSWORD";
trustChannelFactory.TrustVersion = TrustVersion.WSTrustFeb2005;
//// Prepare the RST.
//var trustChannelFactory = new WSTrustChannelFactory(tokenParameters.IssuerBinding, tokenParameters.IssuerAddress);
var trustChannel = (WSTrustChannel)trustChannelFactory.CreateChannel();
var rst = new RequestSecurityToken(RequestTypes.Issue);
rst.AppliesTo = new EndpointAddress(@"https:<RPADDRESS>");
// If you're doing delegation, set the ActAs value.
var principal = Thread.CurrentPrincipal as IClaimsPrincipal;
var bootstrapToken = principal.Identities[0].BootstrapToken;
// The bootstraptoken is the token received from the AD FS after succesfull authentication, this can be reused to call the AD FS the the users credentials
if (bootstrapToken == null)
{
throw new Exception("Bootstraptoken is empty, make sure SaveBootstrapTokens = true at the RP");
}
rst.ActAs = new SecurityTokenElement(bootstrapToken);
// Beware, this mode make's sure that there is no certficiate needed for the RP -> AD FS communication
rst.KeyType = KeyTypes.Bearer;
// Disable the need for AD FS to crypt the data to R-STS
Scope.SymmetricKeyEncryptionRequired = false;
// Here's where you can look up claims requirements dynamically.
rst.Claims.Add(new RequestClaim(ClaimTypes.Name));
rst.Claims.Add(new RequestClaim(ClaimTypes.PrimarySid));
// Get the token and attach it to the channel before making a request.
RequestSecurityTokenResponse rstr = null;
var issuedToken = trustChannel.Issue(rst, out rstr);
var claims = GetClaimsFromToken((GenericXmlSecurityToken)issuedToken);
private static ClaimCollection GetClaimsFromToken(GenericXmlSecurityToken genericToken)
{
var handlers = FederatedAuthentication.ServiceConfiguration.SecurityTokenHandlers;
var token = handlers.ReadToken(new XmlTextReader(new StringReader(genericToken.TokenXml.OuterXml)));
return handlers.ValidateToken(token).First().Claims;
}