我正在使用Worklight 6.0和基于表单的身份验证。
我认为WL.Client.createChallengeHandler()的参数是挑战处理程序将解决的领域,但测试似乎表明没有办法创建特定于领域的挑战处理程序。
我有一个带有2个程序的适配器。 每个过程都有一个单独的安全测试。 每个测试对应一个不同的领域:r1和r2。
在我的应用程序中,我有2个挑战处理程序,一个用于r1,另一个用于r2。但是,r1的质询处理程序最终会处理两个适配器过程的挑战。我发现我可以在WL.Client.createChallengeHandler()中使用任何字符串...不存在的领域,空字符串,甚至没有参数,它可能会改变2个挑战处理程序中的哪一个被使用,但是使用了哪个被使用面对所有挑战。
WL.Client.createChallengeHandler()的用法是什么?有没有办法将挑战处理程序与领域联系起来?
答案 0 :(得分:2)
此参数对大多数用户身份验证案例没有意义。 Realm不是通过名称检测,而是通过挑战处理程序内的isCustomResponse()函数检测到。
基本上WL auth框架知道如何处理两种类型的域
内部WL安全领域,例如noDeviceProvisioning,antiXSRF等。它们来自WL身份验证框架,并具有预定义的硬编码领域名称。在这些领域的情况下,参数(realmName)由WL框架在内部使用。
所有其余的,包括自定义用户身份验证领域,网关,无论你想要什么。在这种情况下,开发人员不能依赖于realmName,因为在某些情况下,开发人员甚至无法控制挑战的样子(例如auth网关)。因此,您可以提供任何字符串作为s realmName参数(无论如何都会被忽略)并使用isCustomResponse()函数来检测质询是否属于特定领域。
良好的做法是提供适当的realmName,以使您的代码能够在未来证明。