尝试从Rest客户端(邮递员)调用通过HCP(SF扩展帐户)公开的Java服务

2020-09-13 04:58发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我们已经创建了一个Java servlet,并将其作为SCP中的JAVA应用程序公开(部署在SF扩展子帐户中,因此SF IdP在SCP中作为受信任的IdP是主要身份),现在当我们尝试从浏览器中调用此服务时,它要求SF 用户名和密码(SF登录屏幕),一经验证即可正常工作。

现在,我们想在SCP环境之外调用此服务,例如从Postman(或任何其他其他客户端)调用此服务,我们尝试使用用户标识和密码进行基本身份验证,这会产生以下错误

是否需要进行任何配置才能使其正常工作? 请提出建议。

感谢与问候,

邯郸

(32.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我们已经创建了一个Java servlet,并将其作为SCP中的JAVA应用程序公开(部署在SF扩展子帐户中,因此SF IdP在SCP中作为受信任的IdP是主要身份),现在当我们尝试从浏览器中调用此服务时,它要求SF 用户名和密码(SF登录屏幕),一经验证即可正常工作。

现在,我们想在SCP环境之外调用此服务,例如从Postman(或任何其他其他客户端)调用此服务,我们尝试使用用户标识和密码进行基本身份验证,这会产生以下错误

是否需要进行任何配置才能使其正常工作? 请提出建议。

感谢与问候,

邯郸

(32.6 kB)
付费偷看设置
发送
2条回答
路亽曱_Ryan
1楼-- · 2020-09-13 05:34

嗨Chandan,

据我了解,您已经将SCP的身份验证委托给了第三方软件(SF IdP)。 为此,您需要在Postman与Servlet进行交互之前进行身份验证。 但是,SCP不会使用基本身份验证自动转发身份验证请求。 类型" Basic"将向您的POST方法添加HTTP请求标头(" Authoriazation = Basic xxxxxxxx")。 但是,一旦将身份验证委派给另一个IdP,SCP将不再支持此标头。

Postman已经附带了两种OAuth2身份验证方法。 请按照本文档中描述的步骤进行操作 在SCP中创建一个OAuth客户端,以便您可以与Postman一起使用。 完成此操作后,您将拥有Postman所需的数据,以便可以执行身份验证,接收OAuth令牌(称为承载),然后就可以与在SCP帐户上运行的受保护的servlet进行通信。

最好的问候,
伊万

Bunny_CDM
2楼-- · 2020-09-13 05:25

嗨伊万,

这是web.xml代码

 <登录配置>
  FORM 
 
 <安全性约束>
 
   保护区域
   /* 
 
 
   <!-角色将无法分配给所有人->
   所有人
 
 
 <安全角色>
 所有SAP Cloud Platform用户
 所有人
  

我也尝试过在中使用OAUTH,并在邮递员中传递了" bearer token",但仍然面临着这个问题。 >根据您的web.xml,您的servlet受jee容器安全性保护,该安全性与为此特定Java应用程序设置的默认身份验证机制集成在一起。 我还看到您在应用程序上使用了FORM身份验证。 这意味着唯一的身份验证方法是通过Web表单,因此您只能通过通过浏览器导航到Web表单才能进行身份验证。 另一方面,POSTMAN支持BASIC,但不支持FORM。 因此,当您在该URL上执行GET操作时,您将获得实际的身份验证表单(请复制消息" 注意"后面的响应HTML。注意:您的浏览器不支持JavaScript或浏览器已关闭。请按按钮以继续 "添加到本地文件中,然后在浏览器中打开它即可看到它。)

以下是为您提供的一些选项:

1)更改您的网站。 xml以使用BASIC身份验证(如果您正在开发应使用的API服务,而不是Web表单登录名,这是针对真正的人而非应用程序的)。 如果您需要同时使用两者,那么我建议您将API服务放在一个使用不同web.xml的单独的Web模块中。 相反,您可以尝试实现登录过滤器,以将其应用于api的url模式。 在这里您会找到答案,其中包含在tomcat中执行此操作的步骤。

2)使用驾驶舱为您的应用程序配置自定义登录过程。 打开您的应用程序,然后在菜单树上打开"安全性"会话,然后单击"身份验证配置"。 然后单击第一个按钮"激活自定义配置"。 这将启用标准登录过程下方的自定义设置。 通过单击向下箭头按钮,在FORM方法名称中添加"用户名和密码"方法。 设置应如下所示:

完成此操作后,重新启动应用程序以启动

OR

3)将应用程序身份验证方法更改为OAuth。 在这种特殊情况下,oauth范围将替换您的应用程序授权方案中的角色。 然后,要从Postman调用它,您必须在座舱中创建一个" oauth客户端",其ID和机密以及授权授予为"客户端凭据",并且机密设置为" true"。 您必须先致电SCP,然后才能呼叫该服务。 您可以通过在邮递员中使用客户端ID和密码作为用户名和密码来调用SCP的oauth令牌端点来完成此操作(请不要忘记添加参数 grant_type = client_credentials 。此请求将返回一个有效的令牌 然后,在授权给您的servlet的Servlet的下一个请求中使用此令牌,使用授权类型作为Bearer并将其粘贴到该令牌中。如果您对此过程有疑问,可以使用以下博客作为参考-检查最后一部分 来自" 最后测试流程"。

最诚挚的问候,
伊万

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答