1

Microsoft.IndentityModel (= Windows Indentity Foundation) を使用して、STSのカスタムSecurityTokenおよびSecurityTokenHandlerを実装しようとしています。

トークンは、署名付きの単純な xml ドキュメントにシリアル化され (X509 証明書を使用)、暗号化される場合もあります (常にではありません) (ターゲット領域によって異なります)。

これまでは非常にうまく機能していましたが、SecurityKeyIndetifierClause.

私の質問は次のとおりです: SecurityKeyIndentifierClauseSecurityKeyは何ですか?SecurityKeyIndentifier

MSDN にはほとんどドキュメントがなく、このトピックに関して他に役立つものは見つかりませんでした。

前もって感謝します。

PS: 最も簡単で推奨される方法は、saml のようなトークン形式でビルドを使用することですが、トークンは、私が影響を及ぼさない特定の形式を期待するレガシー システムによって評価されます。

4

2 に答える 2

2

その間、私は自分自身の質問に対する答えを見つけました:

セキュリティキー

SecurityKey は、暗号操作に使用されます。これは、ベアラー トークンの実装では必要ありません。したがって、 SecurityTokenの対応するプロパティで空のリストを返すことができます:

public override ReadOnlyCollection<SecurityKey> SecurityKeys
{
    get { return new List<SecurityKey>().AsReadOnly(); }
}

SecurityKeyIdentifierClause

他の回答ですでに指摘したように、SecurityKeyIdentifierClauseはセキュリティ トークンの一意の識別子のようなものです。指定されたSecurityKeyIdentifierClause に対応する SecurityToken返すためにSecurityTokenResolverによって使用されます。

おそらく、独自のSecurityTokenHandler実装の最善の解決策は、トークンの ID をlocalIdパラメーターとして使用して LocalIdKeyIdentifierClause を返すことです

public override SecurityKeyIdentifierClause CreateSecurityTokenReference(SecurityToken token, bool attached)
{
    if (token == null)
        throw new ArgumentNullException("token");

    return new LocalIdKeyIdentifierClause(token.Id);
}

SecurityKeyIdentifier

SecurityKeyIdentifierは SecurityKeyIdentifierClauses のコレクションです。必要に応じて、ここでSystem.IdentityModel.Tokensの実装を使用できます。通常、これを自分で処理する必要はありません。

于 2011-08-02T17:26:39.637 に答える
0

キー識別子は、いくつかのことを行うためにカスタム トークンと共に使用されます。それらはトークンを記述し、および/または他の関連するトークンを指します(トークンは単にポインターである可能性があるため-おそらくパフォーマンス上の理由などから)。キー識別子が必要ない場合は、次の 2 つのことを行うことができます。

  • CanWriteKeyIdentifierClause から false を返します。

    public override bool CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause securityKeyIdentifierClause) { false を返します。}

  • CreateSecurityTokenReference からデフォルト (または null) 値を返します。

    public override SecurityKeyIdentifierClause CreateSecurityTokenReference(SecurityToken トークン、bool 添付) { return default(SecurityKeyIdentifierClause); }

于 2011-07-27T16:33:27.880 に答える