点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好社区,
我想使用客户端证书认证来保护我的JAVA Servlet之一:
字符串用户= request.getRemoteUser(); //验证用户身份 如果(用户!= null){ _Logger.info("用户已通过身份验证"); } 其他{ //验证用户身份 LoginContext loginContext; 尝试{ loginContext = LoginContextFactory.createLoginContext(" CERT"); loginContext.login(); //更新用户 用户= request.getRemoteUser(); } catch(LoginException e){ _Logger.error("身份验证失败:",e); 返回; } }
我创建了证书,并与我的CA签署了证书。 我将证书添加到密钥库中,并按以下说明将其上传到SCP:
此外,我将域 cert.hana.ondemand.com 添加到了我的域中 Java应用程序。
例如,当我使用工具" SoapUi"或JAVA HttpClient调用servlet并发送证书时,我总是使用LoginException:
avax.security.auth.login.LoginException:客户端证书在请求中不可用
有人知道出什么问题了吗?
最好的问候和感谢,
克里斯
克里斯托弗,你好
您如何访问您的应用程序?
发出发出向其添加" cert"域的neo命令后,这是访问应用程序的正确方法。
代替:
我生成了一个战争文件,并使用驾驶舱来部署该应用程序,因此我可以如下指定VM参数:
如果您在部署期间未指定此选项,则您的证书URL将不起作用。
您可以通过neo deploy命令指定此VM参数,但是您必须事先准备application.properties文件。
请注意,如果您未使用此处客户端证书将永远不会被浏览器发送,因为它不是SCP信任的证书。
如果是这种情况,建议您将SCP与公司IdP一起使用,以使用SAML对用户进行身份验证。 此设置将支持内部CA颁发的证书(因为身份验证委托给您的IdP),并且该身份验证对于SCP上的所有应用程序均有效。
我看到了以下附加的VM参数:
尽管如此,请检查此jks上需要哪些CA,因为它们与您用于本地测试的CA可能不完全相同。 您所需要做的就是对存储在浏览器中的p12客户端证书进行签名的根证书和中间证书。
希望有帮助。
关于,
Ivan
也许OAuth客户端凭据流也是机器对机器通信的好方法。
嗨,Ivan, >
非常感谢您的回答。
是的,我在应用程序中添加了" cert"域,并在请求中使用了" cert"网址。
我使用以下命令来部署没有application.properties文件的应用程序。 这个文件是必需的,我如何在其中设置vm参数?
我使用了一个由我自己创建的自定义CA来签署我的客户证书。 也许是问题所在? 如何使用上述CA之一(我不是证书专家)?
我已经配置了一个SAML IDP,用于在SCP上托管的应用程序,并且运行良好。
但是我有一个场景,客户在后端系统中调用我的云服务。 在这种情况下,SAML是不可能的,因为它是"机器之间的机器"通信。 在这种情况下,我想使用客户端证书进行身份验证。 还是您看到一种更好的方法?
最好的问候
克里斯
嗨克里斯,
我和您的情况相同,后端系统连接到云服务。
您解决了这个问题吗? 对于您针对此问题的解决方案,我感到非常好奇。
非常感谢。
Alex。
一周热门 更多>