0

SWT トークン要求を介して ID プロバイダー (Facebook) トークンと引き換えに ACS トークンを要求するための公式チュートリアル ( http://msdn.microsoft.com/en-us/library/hh674475 ) に従いました。

可能な限りのことを試しましたが、このエラーを取り除くことができません

ErrorCode:400:SubCode:T1019:Detail: SWT トークンが無効です。wrap_assertion 値は SWT アサーションではありません

ノート:

  1. Issuer= [ID プロバイダーの編集ページのレルム] は既に確認済みです。
  2. 署名鍵は、トークン署名鍵の下に示されているものと同じ対称鍵です
  3. また、ACS トークンを取得するために、ACS エンドポイントへの SWT トークンのクレームとして facebook accesstoken をラップしています。

私が何か間違ったことをしている場合は修正してください。ええ、私はこれについて多くのことをグーグルで調べましたが、解決するものは何も見つかりませんでした!

PS: サービス ID でパスワード トークン リクエストも試しましたが、問題なく動作します。

4

2 に答える 2

0

あなたの問題は、Facebook と直接やり取りしてから、ACS にアクセス トークンを渡しているように見えることです。それは Facebook の ACS モデルではありません。基本的なモデルは、ACS がアプリではなく Facebook を最初に処理することです。これが機能する方法は次のとおりです。

  1. エンド ユーザーは、Facebook からアクセス トークンを要求します。これは、ACS を介して (たとえば、WS-Federation サインイン要求を行うことによって) 直接行われるか、ACS によって指定された URL (IdentityProviders.js を介して) に対して行われます。
  2. ユーザーは Facebook にログインします。
  3. 認証コードが ACS に送信されます。
  4. ACS は認証コードをアクセス トークンと交換し、一部のユーザ データを取得します。これはルールを通じて実行され、トークンにパッケージ化され、RP に送信されます。このトークンのクレームの 1 つはアクセス トークンであり、RP はこれを使用してさらに Facebook を呼び出すことができます。

ACS は、自分でアクセス トークンを取得するモデルをサポートしていません。これは、あなたがやろうとしていることのようです。

于 2013-07-19T21:52:00.840 に答える