8

.NET 4.5 で新しい ASP.NET MVC アプリケーションを作成しました。STS による認証を正常にセットアップしました。認証フローは正常に機能しており、必要なクレームを含む ClaimsIdentity を Thread.CurrentPrincipal で取得できます。

ここで、サービス層への呼び出しを保護するためにブートストラップ トークンが必要です。identityConfiguration 要素で saveBootstrapContext を true に設定しました。

<system.identityModel>
    <identityConfiguration saveBootstrapContext="true">

ただし、ClaimsIdentity の BootstrapContext プロパティは常に null です。

var identity = Thread.CurrentPrincipal.Identity as ClaimsIdentity;
var context = identity.BootstrapContext; // context is always null

ここで何か不足していますか?これは簡単なはずでした:(

4

4 に答える 4

3

メッセージ ハンドラーを使用してトークンを手動で検証しJwtSecurityTokenHandler、クレーム プリンシパルを抽出して現在のスレッドにアタッチする場合は、ここで説明されているように、「貧乏人」の Delegation/ActAs を実装するための JWT ハンドラーの使用で説明されています。を使用してトークンを検証しています。JwtSecurityTokenHandler.ValidateToken()設定の 1 つはTokenValidationParameters、 トリックを行うSaveBootstrapContext設定です。true

于 2014-08-12T04:39:47.597 に答える
3

IIS Express でホストしているときに、この問題に遭遇しました。問題はブラウザにあることが判明しました。すべてのブラウザ ウィンドウを閉じていないか、Cookie をクリアしていないため、サーバーが再起動されたにもかかわらず、SessionSecurityToken が新しい設定で再作成されませんでした (既存の FedAuth Cookie がまだブラウザから送信されます)。

すべてのブラウザー ウィンドウを閉じ、ブラウザーを再起動し、要求を再度実行して再認証を強制すると、BootstrapContext が存在していました。

于 2013-01-22T18:43:32.140 に答える