3

我正在使用 Worklight 6.0 和基于表单的身份验证。

我认为 WL.Client.createChallengeHandler() 的参数是挑战处理程序将处理的领域,但测试似乎表明没有办法创建特定于领域的挑战处理程序。

我有一个带有 2 个程序的适配器。每个过程都有单独的安全测试。每个测试对应一个不同的领域:r1 和 r2。

在我的应用程序中,我有 2 个挑战处理程序,一个用于 r1,一个用于 r2。但是,r1 的质询处理程序最终会处理两个适配器过程的质询。我发现我可以在 WL.Client.createChallengeHandler() 中使用任何字符串……不存在的领域、空字符串,甚至没有参数,它可能会改变使用 2 个质询处理程序中的哪一个,但使用哪个被使用应对所有挑战。

WL.Client.createChallengeHandler() 的参数用于什么?有没有办法将挑战处理程序与领域联系起来?

4

1 回答 1

2

对于大多数用户身份验证情况,此参数没有任何意义。领域不是通过它的名称检测的,而是通过质询处理程序中的 isCustomResponse() 函数检测的。

基本上 WL auth 框架知道如何处理两种类型的领域

  1. 内部 WL 安全领域,例如 noDeviceProvisioning、antiXSRF 等。它们来自 WL 身份验证框架并具有预定义的硬编码领域名称。在这些领域的情况下,参数 (realmName) 由 WL 框架在内部使用。

  2. 其余的,包括自定义用户身份验证领域、网关,以及任何你想要的。在这种情况下,开发人员不能依赖 realmName,因为在某些情况下,开发人员甚至无法控制挑战的外观(例如身份验证网关)。因此,您可以提供任何字符串作为 s realmName 参数(无论如何它都会被忽略)并使用 isCustomResponse() 函数来检测挑战是否属于特定领域。

好的做法是无论如何都提供一个适当的领域名称,以使您的代码能够适应未来。

于 2013-12-11T07:02:38.793 回答