2

我正在使用System.IdentityModel.NET 4.5 中的 WIF ( ) 类创建 STS。此 STS 需要处理 ActAs 令牌。我已经成功地对客户端进行了原型设计以发送 ActAs 令牌,这会导致服务器端出现以下错误消息:

ID3265:找到 ActAs 元素,但没有注册令牌处理程序来读取 ActAs 元素。考虑将有效的 SecurityTokenHandlerCollection 添加到 SecurityTokenHanderCollectionManager 以供 ActAs 使用。

但是,我认为没有办法将 a 添加SecurityTokenHandlerCollectionSecurityTokenHanderCollectionManager. 这是怎么做到的?

我已经尝试过文档中的建议:

<securityTokenHandlers name="ActAs">
    ...
</securityTokenHandlers>

但这会导致此错误:

ID0005:输入“configElement.ElementInformation.Properties”集合不包含名为“ActAs”的属性。

“等效”(根据该文档)咒语ServiceConfiguration.SecurityTokenHandlerCollectionManager["ActAs"]同样无益:

未处理的异常:System.Collections.Generic.KeyNotFoundException:字典中不存在给定的键。在 System.Collections.Generic.Dictionary`2.get_Item(TKey key) 在 System.IdentityModel.Tokens.SecurityTokenHandlerCollectionManager.get_Item(字符串使用)

请注意,本文档提供的信息与1基本相同,但专门针对 .NET 4.5。

如何处理 ActAs 代币?

4

1 回答 1

1

索引器SecurityTokenHandlerCollectionManager不是只读的:

// Summary:
//     Returns the security token handler collection for the specified usage.
//
// Parameters:
//   usage:
//     The usage name for the token handler collection.
//
// Returns:
//     The token handler collection associated with the specified usage.
public SecurityTokenHandlerCollection this[string usage] { get; set; }

只需SecurityTokenHandlerCollection将给定键设置为所需的集合:

SecurityTokenHandlerCollectionManager["ActAs"] = new SecurityTokenHandlerCollection();
// or:
SecurityTokenHandlerCollectionManager[SecurityTokenHandlerCollectionManager.Usage.ActAs] = new SecurityTokenHandlerCollection();
于 2013-01-30T20:22:32.637 回答