2016-08-09 16 views
2

私はwinformsアプリケーションをC#で構築して、ADFS(windowsmixed)からの認証トークンを要求しました。これはうまく動作し、トークンを発行しました。私はWIF/ThinkTecture IdentityModelを使用しています。GenericXmlSecurityTokenを格納/逆シリアル化/シリアル化する方法は?

トークンをローカルにキャッシュして保存してから、トークンを再ロードするのが良い方法は何ですか?

私はGenericXmlSecurityTokenオブジェクトの形でトークンを発行しました。これをファイルに保存してキャッシュし、それを新しいGenericXmlSecurityTokenオブジェクトにリロード/シリアル化する最も良い方法はありますか?

私は文字列にトークンを変換して保存することができます

string strToken = ((GenericXmlSecurityToken)genericToken).TokenXml.OuterXml; 

をしかし、私はこれが最善のアプローチであっても、または(私は余分なセキュリティを感謝し、この文字列のバックGenericXmlSecurityTokenに、シリアライザを再するかどうかはわかりませんトークンをディスクに保存するときに必要です。これは将来のタスクです)。

答えて

0

System.IdentityModelを使用すると、GenericXmlSecurityTokenをXmlにシリアル化できます。ここでは、Shawn Cicoriaの投稿で、これを行う方法の例を挙げています。https://blogs.msdn.microsoft.com/scicoria/2012/03/22/getting-a-securitytoken-from-a-requestsecuritytokenresponse-in-wif/

シリアライズされたトークンがあれば、それを保存する方法を考案する必要があります。

注: System.IdentityModelおよびSystem.IdentityModel.Servicesへの参照をまだ追加していない場合は、追加します。

0

デシリアル化されたトークン、つまりWCFを初期化するだけの場合(メソッドの名前はWithIssuedTokenを作成するようなものだと思います)、constructor of GenericXmlSecurityTokenを使用できます。のみXmlElement tokenXmlパラメータを使用してから実際の値に対応しないであろうヌルとして他の(または日時パラメータのいくつかのデフォルト)

var xmlToken = new GenericXmlSecurityToken(
     tokenXmlElement, 
     null, 
     DateTime.Now, 
     DateTime.Now.AddHours(1), 
     null, 
     null, 
     null); 

Iがインスタンス(effectiveTimeとexpirationTime等)の性質を有するであろうことに注意してくださいを残し今は非同期のSecurityTokenです(コンストラクタで手動で設定したためです)。しかし、WCFはトークン内の実際の情報を使用するため、このように動作します。

関連する問題