0

ACS 2.0ドキュメントを読み始めたとき、ACSはクレームベースの認証と統合されていることに気付きました。したがって、アプリケーションでクレームを使用したくない場合、SWTまたはJSON形式でデータを取得するにはどうすればよいですか?

誰かがこれを達成する方法の例を持っていますか?

4

2 に答える 2

0

証明書利用者のトークン形式を設定して、ACS によって発行されるトークンの形式を指定します。アプリケーション (証明書利用者) と ACS の統合を計画している場合は、これらのプロトコルのいずれかを利用するため、ACS でサポートされているプロトコルを確認することをお勧めします。ACS でサポートされるトークン形式では、トークン形式の違いについて説明し、証明書利用者にとって最適な選択肢を決定するのに役立ちます。

発行することを選択したトークン形式 (SAML、JWT、SWT) に関係なく、証明書利用者は、承認の決定を行う際に Web トークンを検証し、アサートされたクレームを抽出する責任があります。

于 2013-03-11T17:01:14.623 に答える
0

最も簡単な解決策: SWT トークンを使用するように ACS を切り替え、ブートストラップ トークンを保存するようにアプリを構成し、web.config でそれらを使用します。

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

応用:

var claimIdentity = Thread.CurrentPrincipal.Identity as ClaimsIdentity;
if (claimIdentity == null)
{
    return;
}

BootstrapContext bootstrapContext = claimIdentity.BootstrapContext as BootstrapContext;
SecurityToken token = null;
//you must configure SWT token handler in web.config or set up 'em manually like
SecurityTokenHandlerCollection handlers = FederatedAuthentication.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers;
//here is a bug in 4.5 cause a bootstrapContext.SecurityToken disappear sometimes. 
//http://blogs.msdn.com/b/vbertocci/archive/2012/11/30/using-the-bootstrapcontext-property-in-net-4-5.aspx
if (bootstrapContext.SecurityToken != null)
    {
        token = bootstrapContext.SecurityToken;
    }
else if (!string.IsNullOrEmpty(bootstrapContext.Token))
    {
        token = handlers.ReadToken(new XmlTextReader(new StringReader(bootstrapContext.Token)));
    }
于 2013-03-12T05:48:56.850 に答える