如何为SOAP Web服务实现JWT(JSON Web Token)?

8

我希望为我的SOAP webservice实现JWT。基本上,我想实现基本的JWT安全性,通过SOAP webservice请求HTTP头部。我的项目构建为EAR并包含几个没有任何身份验证的SOAP webservice。有人能提供一步一步的方法吗?我试图参考一些在线资源,但所有这些资源都与rest web service相关,我不确定是否实现JWT适用于SOAP webservice。


你找到了吗? - undefined
嗨@Mohammed Ali,我实际上写了一个Unix脚本来使用JWT API进行编码和解码,然后将这个脚本嵌入到我的Web服务器库中。同时,在调用SOAP API时,我将这个自动生成的令牌放在SOAP头部中,然后解码和验证它。这种做法可能不太合适,但对我们的需求起到了作用。已经过去两年多了,现在市场上可能已经有了相应的支持。 - undefined
2
我将我的SOAP网络服务转换为JSON REST网络服务,并且抛弃了那个SOAP东西 :P - undefined
1
最明智的决定!我必须说 :) - undefined
1个回答

0
根据您的应用程序,您可能需要使用WS-Security,也可能不需要。
但无论如何,您仍然可以使用JWT来让客户端进行身份验证,并可能提供授权范围。JWT只是一个带有嵌入状态信息的签名密钥,只要您能够将其从客户端传递到服务器,它就可以被使用。您可以将其作为cookie发送(通常来自浏览器客户端)或在标头中发送(通常是Authorization标头),但基本上您可以以适合您的应用程序的任何方式进行操作。您甚至可以将其作为请求SOAP正文的XML元素放置,但可能没有人会鼓励您这样做。
确保您可以在客户端上保持JWT的安全性,使其对其他应用程序(进程/线程)或其他Web应用程序(在其他选项卡/窗口中运行的JavaScript)不可访问。如果从客户端被盗,任何其他参与者都可以使用它进行身份验证。

1

首先,确定客户端应该如何获取JWT。可以是一个自托管的服务,其中提供了秘密或一些生物特征来证明真实性,或者可以是像Auth0这样的托管服务。任何可以用个人信息交换JWT的系统。

2

其次,决定您的Web应用程序将如何验证传入的JWT。它基本上需要获取公钥并使用您选择的算法(如RS256或类似算法)来验证签名。您需要一种API网关,可以拦截所有调用,并且如果JWT不满足您的需求,则可以阻止它们。调查您的Web服务,找到验证的正确位置。

3

最后,在https://jwt.io/上,你可以找到帮助你进行签名验证的库,并且你可以使用它来创建带有你自己的测试密钥的JWT。通过这样做,你可以构建你的Web应用程序并测试认证部分。同样的方法也适用于开发客户端,一旦它获取到JWT,你可以在jwt.io上进行测试,以确保它被正确签名。
请注意,JWT本身在底层是以JSON格式(也是base64编码)存在的,但这并不妨碍你的有效载荷体被XML编码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接