3

http://leastprivilege.com/2012/11/01/oauth2-in-thinktecture-identityserver-v2-resource-owner-password-flow/にある OAuth2 リソース所有者パスワード フローの Thinktecture Identity Server の例に従っています。

次のプロセスを介して、正常に動作し、JWT トークンを返す例があります。

  1. Thinktecture OAuth2Client を使用してアクセス トークンを取得します
  2. クライアント マシンの「Trusted People」ストアから署名証明書を取得します。
  3. 証明書を使用して新しいJwtSecurityTokenHandlerandを作成し、ClaimsPrincipal を取得するためのTokenValidationParameters呼び出しtokenHandler.ValidateToken

ここから承認されますが、今後のリクエストのためにトークンを保持する最善の方法がわかりません。使ってみた

var sessionToken = new SessionSecurityToken(principal, TimeSpan.FromHour(8));
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionToken);

しかし、私は登録していませんSessionAuthenticationModule。Identity and Access ウィザードを使用してこれを実装しようとしましたが、構成に多くの変更が加えられ、パッシブ認証の設定が試行されます。

従来の FormsAuthentication Cookie (.aspnetAuth) を使用することもできましたが、.FedAuth Cookie の利点は、サイズが大きくなりすぎた場合に自然に複数の Cookie に分割されるという議論を覚えています。

私は自分の絵を完成させる記事を見つけるのに苦労しています. スタックのさらに下にあるさまざまな API にアクセスするには、ベアラー トークンが必要です。ほとんどの作業はあなたのために行われるため、SSO/パッシブ認証についてはこれの実例があります。リソース所有者のパスワード フローを使用する場合に使用する最適なパターンがわかりません。

そう

  1. Thinktecture Identity Model と Server でこれを達成するためのより簡単な方法を見逃していませんか?
  2. WIF 用に既にセットアップされているさまざまな Messagehandler/filter コンポーネントを再利用できるように、FedAuth Cookie を作成する必要がありますか?
  3. それ以外の場合 - FormsAuthentication Cookie の UserData セクションにアクセス トークンを単純に配置するだけで特に問題はありますか?
4

1 に答える 1

0

この質問を見てみてください: WIF Security Token Caching

このコードでうまくいくと思います

var sessionSecurityToken = new SessionSecurityToken(principal, TimeSpan.FromHours(Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["SessionSecurityTokenLifeTime"])))
{
    IsPersistent = true, // Make persistent
    IsReferenceMode = true // Cache on server
};
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionSecurityToken);
于 2014-03-14T15:17:34.547 に答える