0

Windows Identity Foundation を使用するように、いくつかのアプリケーションを構成しています。パッシブ リダイレクトを使用して、Security Token Service からセキュリティ トークンを取得します。これは、WIF の使用を開始する前に存在していたログオン Web サイトに WIF コードを挿入し、アプリケーション内で [Add STS Reference] を使用することで実現しました。

ただし、ログオン Web サイトを使用しないアプリケーションが 1 つあります。私がやりたいことは、ユーザーを外部 STS にリダイレクトせずに、アプリケーション自体の中でセキュリティ トークンを生成することだと思います。

外部 STS から受け取ったセキュリティ トークンにクレームを追加するために使用できる ClaimsAuthenticationManager クラスを使用して、これを達成しようとしましたが失敗しました。ただし、ClaimsAuthenticationManager はこのコンテキストでは機能しません。ClaimsAuthenticationManager をセッションごとに 1 回だけ呼び出すのではなく (期待される望ましい結果)、ページの読み込みごとに呼び出され、前のページの読み込みでユーザーに割り当てたクレームの兆候はありません。

ユーザーにデータベースからのクレームを与える外部 STS の作成を検討していますが、これは危険であると考えています。1 つの Web サイトだけのために完全に別個の STS を作成しなければならない理由はないようです。アプリケーション内でセキュリティ トークンを生成したいだけです。

4

1 に答える 1

-1

Security Token Service クラスを独自のアプリケーション内に配置することができます。

ただし、ユーザーがトークンを取得する前にアプリケーションのログイン ページにアクセスできるようにするには、web.configdeny users=?のセクションから を削除する必要があります。Authorizationこれにより、ユーザーはセキュリティ トークンなしで Web ページにアクセスできるようになります。ログインしたら、適切なページにリダイレクトします。

これには、便利なパッシブ リダイレクト機能を使用できないという欠点がありますが、機能します。つまり、ユーザーがログインを必要とする操作を実行しようとすると、ユーザーを手動でログイン ページにリダイレクトする必要があります。

于 2010-02-19T20:52:01.857 に答える