2011-12-15 10 views
1

ADF2.0、WIF(WS-Federation)、ASP.NET:web.configに定義されているhttpモジュールやIdentityFoundationの設定はありません(ほとんどのWIF SDKサンプルのように)、代わりにWSFederationAuthenticationModule 、ServiceConfigurationクラス、およびSignInRequestMessageクラスです。私はhttpでADFSへのリダイレクトをコードで行い、それはうまく動作していると思われ、要求を返して、httpリクエストでシリアル化された主張でユーザーを自分のWebサイトにリダイレクトします。したがって、問題は、WIFのクラス、プロパティ、およびメソッドを使用してこのリクエストを解析し、そこからクレーム値を抽出する方法です。ありがとうWIFを使用しているコードでhttp要求の要求をシリアル化する方法は?

+0

モジュールと設定を避ける理由を尋ねることはできますか?あなたはある程度車輪を再発明しているようです。 –

+0

これは長い話です。まもなく、私たちはすでにユーザ認証の従来の仕組みを持っています。私たちはこれからも使い続けるつもりです。 SSOはユーザーに提供される選択肢であり、WS-Fed SSOを単一のページ/サービスに実装してクレームを獲得し、独自の認証システムに変換し、システムの残りの部分はそのままにします。私たちが今やっているのは、私たち自身のレガシー認証システムに一種の変換WS-Def SSO(ADFS、WIF)です。私たちは、WSFederationAuthenticationModuleのようなMSのhttpモジュールが動作し、認証を制御することを望んでいません。 – YMC

答えて

1

私の経験を共有したい場合は、将来的に誰かを助けるかもしれません。まあ、解決策は、私が最終的にこのようなルックスに来た:私は読み、トークン解析する代わりにSaml11SecurityTokenHandlerのSecurityTokenServiceConfigurationを(それがトークンハンドラが含まれている)を使用して、いくつかの類似したコードを見つけ

var message = SignInResponseMessage.CreateFromFormPost(Request) as SignInResponseMessage; 

var rstr = new WSFederationSerializer().CreateResponse(message, new WSTrustSerializationContext(SecurityTokenHandlerCollectionManager.CreateDefaultSecurityTokenHandlerCollectionManager())); 

var issuers = new ConfigurationBasedIssuerNameRegistry(); 
issuers.AddTrustedIssuer("630AF999EA69AF4917362D30C9EEA00C22D9A343", @"http://MyADFSServer/adfs/services/trust"); 

var tokenHandler = new Saml11SecurityTokenHandler {CertificateValidator = X509CertificateValidator.None}; 
var config = new SecurityTokenHandlerConfiguration{ 
    CertificateValidator = X509CertificateValidator.None, 
    IssuerNameRegistry = issuers}; 

config.AudienceRestriction.AllowedAudienceUris.Add(new Uri("MyUri")); 
tokenHandler.Configuration = config; 
using(var reader=XmlReader.Create(new StringReader(rstr.RequestedSecurityToken.SecurityTokenXml.OuterXml))) 
    { 
    token = tokenHandler.ReadToken(reader); 
    } 
ClaimsIdentityCollection claimsIdentity = tokenHandler.ValidateToken(token); 

、しかし、それは理由の私のために動作しませんでした証明書の検証に失敗しました。 SecurityTokenServiceConfiguration.CertificateValidatorX509CertificateValidator.Noneはセキュリティの手助けをしていませんセキュリティトークンハンドラクラスは独自のハンドラ構成を使用し、STS設定値を無視します。少なくとも、設定パラメータを指定した場合はコードを使用しますが、web.config 。

関連する問題