因素认证到Java Web应用程序中

我有一个现有的通过IBM WebSphere运行的Java Web应用程序(我不确定版本,但可能会发现它是否有帮助),我期望实施双因素身份验证。

该系统有一个体面的用户群,我想将硬件令牌分发给系统的管理员用户,以确保强大的身份验证。

对最终用户的影响是最小的,但我希望避免管理员需要通过VPN连接。

有谁知道任何提供Java API的产品可以直接集成到现有的应用程序或其他产品中,从而提供最小的影响? 我已经与RSA SecurID进行了交流,但是他们的系统不能直接集成,并且需要对基础架构进行更改。 任何其他的想法/经验,不胜感激。


对于后代,我刚刚向Github发布了简单的Java双因素身份验证实用程序类。 有了它,你可以做如下的事情:

TwoFactorAuthUtil twoFactorAuthUtil = new TwoFactorAuthUtil();

// To generate a secret use:
// String base32Secret = generateBase32Secret();
String base32Secret = "NY4A5CPJZ46LXZCP";
// now we can store this in the database associated with the account

// this is the name of the key which can be displayed by the authenticator program
String keyId = "user@j256.com";
System.out.println("Image url = " + twoFactorAuthUtil.qrImageUrl(keyId, base32Secret));
// we can display this image to the user to let them load it into their auth program

// we can use the code here and compare it against user input
String code = twoFactorAuthUtil.generateCurrentNumber(base32Secret);

// this little loop is here to show how the number changes over time
while (true) {
    long diff = TwoFactorAuthUtil.TIME_STEP_SECONDS
        - ((System.currentTimeMillis() / 1000) % TwoFactorAuthUtil.TIME_STEP_SECONDS);
    code = twoFactorAuthUtil.generateCurrentNumber(base32Secret);
    System.out.println("Secret code = " + code + ", change in " + diff + " seconds");
    Thread.sleep(1000);
}

如果您需要通过TLS客户端证书进行双因素身份验证,那么会有一些硬件加密令牌。 Java可以直接加载PKCS#11存储,尽管可能需要一些配置。 管理员配置与应用程序配置有多大取决于应用程序(有时候是关于如何“锁定”终端以插入USB令牌或具有读卡器)。

可能有其他解决方案,例如一次性密码令牌(不依赖证书,而是依赖于唯一密码)。 这对用户来说似乎不那么沉重。 我必须承认我从来没有尝试过,但这个项目可能很有趣:http://directory.apache.org/triplesec/(还有硬件OTP密钥环,通常由执行RSA卡/ USB令牌的相同供应商提供) 。


我们为Java(以及php,ruby,python和C#)提供了API包:WiKID强认证系统的http://www.wikidsystems.com/downloads/network-clients。 这些软件包是LGPL,所以你也可以在商业产品中使用它们。 他们与我们的开源社区版本和商业企业版本一起工作。

HTH,

缺口

链接地址: http://www.djcxy.com/p/47853.html

上一篇: factor authentication into a Java web app

下一篇: OpenID with Gerrit not working