WL.Client.createChallengeHandler 的参数有啥意义?

Posted

技术标签:

【中文标题】WL.Client.createChallengeHandler 的参数有啥意义?【英文标题】:What is the significance of the argument to WL.Client.createChallengeHandler?WL.Client.createChallengeHandler 的参数有什么意义? 【发布时间】:2013-12-11 05:15:51 【问题描述】:

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

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

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

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

WL.Client.createChallengeHandler() 的参数是做什么用的?有没有办法将挑战处理程序绑定到领域?

【问题讨论】:

【参考方案1】:

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

基本上 WL 身份验证框架知道如何处理两种类型的领域

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

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

最好的做法是提供一个适当的领域名称,以使您的代码经得起未来考验。

【讨论】:

以上是关于WL.Client.createChallengeHandler 的参数有啥意义?的主要内容,如果未能解决你的问题,请参考以下文章