REST轮询:OAuth 2.0-令牌-401错误

2020-08-21 02:36发布

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

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


尊敬的专家,

我有一个场景REST发送方轮询-> PO 7.5-> IDoc接收器。

我的REST Sender适配器必须使用" OAuth 2.0 Grants类型流"连接到Microsoft CRM Dynamics 365。 我可以检索令牌,但是我的HTTP请求失败,错误401-未经授权。

使用Postman App,我可以进行连接。

我在SAP PO 7.5上的REST Polling Sender Adapter设置:

我使用XPI Inspector进行了追踪:

 HTTP_CLIENT:165请求:
 POST/*****.onmicrosoft.com/oauth2/token?resource=https://******.crm4.dynamics.com HTTP/1.1
 授权:基本MjdhO ******
 内容类型:application/x-www-form-urlencoded
 用户代理:SAP HttpClient v1.0
 主机:login.microsoftonline.com
 内容长度:29

 HTTP_CLIENT:165回复:
 HTTP/1.1 200 OK。

 HTTP_CLIENT:165回复:
 {" token_type":"承载者"," expires_in":" 3600"," ext_expires_in":" 0"," expires_on":" 1538140432"," not_before":" 1538136532",
 "资源":" 00000002-0000-0000-c000-000000000000",
 " access_token":" eyJ0eX *******

 HTTP_CLIENT:166请求:
 GET/api/data/v9.0/accounts?%24select=accountnumber&=eyJ0eX*******

 HTTP_CLIENT:166回复:
 HTTP/1.1 401未经授权..Cache-Control:私有
 内容类型:text/html
 服务器:Set-Cookie:ReqClientId = 5e5dc254-76d3-4580-aaf7-8c703338e195;
 expires =星期五,格林尼治标准时间2068年9月28日12:13:52; 路径=/; 安全;
 HttpOnlyWWW-Authenticate:承载authorization_uri = https://login.microsoftonline.com/db3ec******/oauth2/authorize,resource_id = https://******.crm4.dynamics.com/
 x-ms-service-request-id:44 *******
 REQ_ID:44 *******
 x身份验证票证:f66 ********
 Set-Cookie:ApplicationGatewayAffinity = 103f8 ********
 路径=/;域= *******。crm4.dynamics.com
 日期:2018年9月28日星期五12:13:52 GMT
 内容长度:49
 

对于我的令牌请求,我得到了200 OK。
我也得到了令牌,这很好。
但是我对帐户的HTTP请求:GET/api/data/v9.0/accounts? %24select = accountnumber&= eyJ0eX *******

正在收到401未经授权的回复!

我感觉我从令牌请求中收到的令牌未在我的HTTP请求中使用。 我最大的问号是HTTP标头:我在这里做错了。 谁知道如何设置HTTP标头?


谢谢你,
彼得

(28.2 kB)

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

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


尊敬的专家,

我有一个场景REST发送方轮询-> PO 7.5-> IDoc接收器。

我的REST Sender适配器必须使用" OAuth 2.0 Grants类型流"连接到Microsoft CRM Dynamics 365。 我可以检索令牌,但是我的HTTP请求失败,错误401-未经授权。

使用Postman App,我可以进行连接。

我在SAP PO 7.5上的REST Polling Sender Adapter设置:

我使用XPI Inspector进行了追踪:

 HTTP_CLIENT:165请求:
 POST/*****.onmicrosoft.com/oauth2/token?resource=https://******.crm4.dynamics.com HTTP/1.1
 授权:基本MjdhO ******
 内容类型:application/x-www-form-urlencoded
 用户代理:SAP HttpClient v1.0
 主机:login.microsoftonline.com
 内容长度:29

 HTTP_CLIENT:165回复:
 HTTP/1.1 200 OK。

 HTTP_CLIENT:165回复:
 {" token_type":"承载者"," expires_in":" 3600"," ext_expires_in":" 0"," expires_on":" 1538140432"," not_before":" 1538136532",
 "资源":" 00000002-0000-0000-c000-000000000000",
 " access_token":" eyJ0eX *******

 HTTP_CLIENT:166请求:
 GET/api/data/v9.0/accounts?%24select=accountnumber&=eyJ0eX*******

 HTTP_CLIENT:166回复:
 HTTP/1.1 401未经授权..Cache-Control:私有
 内容类型:text/html
 服务器:Set-Cookie:ReqClientId = 5e5dc254-76d3-4580-aaf7-8c703338e195;
 expires =星期五,格林尼治标准时间2068年9月28日12:13:52; 路径=/; 安全;
 HttpOnlyWWW-Authenticate:承载authorization_uri = https://login.microsoftonline.com/db3ec******/oauth2/authorize,resource_id = https://******.crm4.dynamics.com/
 x-ms-service-request-id:44 *******
 REQ_ID:44 *******
 x身份验证票证:f66 ********
 Set-Cookie:ApplicationGatewayAffinity = 103f8 ********
 路径=/;域= *******。crm4.dynamics.com
 日期:2018年9月28日星期五12:13:52 GMT
 内容长度:49
 

对于我的令牌请求,我得到了200 OK。
我也得到了令牌,这很好。
但是我对帐户的HTTP请求:GET/api/data/v9.0/accounts? %24select = accountnumber&= eyJ0eX *******

正在收到401未经授权的回复!

我感觉我从令牌请求中收到的令牌未在我的HTTP请求中使用。 我最大的问号是HTTP标头:我在这里做错了。 谁知道如何设置HTTP标头?


谢谢你,
彼得

(28.2 kB)
付费偷看设置
发送
17条回答
亦是此间程序员
1楼 · 2020-08-21 02:47.采纳回答

更新:对于对此感兴趣的任何人-我关闭了OSS票证,因为我们了解了如何设置REST轮询发送器:

我们必须改编"授权服务器URL"并同时使用"范围"。 通道现在正在工作,令牌已被目标服务器接受:

蓋茨
2楼-- · 2020-08-21 02:50

Hello Manoj,

对不起,我必须创建一个答案-注释"提交"按钮对我不起作用。

请注意,彼得

Cikesha
3楼-- · 2020-08-21 03:01

彼得,

您能否尝试更改参数以将访问令牌作为HTTP标头而不是查询参数发送给

我也想知道为什么在发送方REST池的情况下,SAP没有提供"附加参数"。/p>

我的情况与您的情况类似,但就我而言,它是接收者,这就是我现在可以正常使用的设置的方式。

Br,

Manoj

DafaDDDa
4楼-- · 2020-08-21 02:50

所以我们发现了Microsoft Azure期望" 令牌请求中的"资源"导致此问题。 根据Azure,"资源"应该在HTTP正文中而不是在查询字符串中发送。 我打开了OSS票证,SAP确认他们将为此提供补丁。 同时,我们将设置用于处理令牌的适配器模块。

南山jay
5楼-- · 2020-08-21 02:45

Hello Manoj,

感谢您的帮助。 我现在在PO REST轮询通道中具有以下设置:

在邮递员中,我在GET中使用{{webapiurl}}。 该webapiurl在环境变量中设置。 我在POSTMAN中有一个按钮来手动请求新令牌,然后在我的GET调用中自动使用该按钮。

在PO中,令牌自动用于GET调用中,没有特殊设置。 我既不知道如何在POSTMAN中也不在PO中跟踪确切的HTTP标头。

你会知道我想念什么吗?

谢谢你,彼得

打个大熊猫
6楼-- · 2020-08-21 02:48

Hello Don Tan,

对不起,我的回答很晚。 我有以下内容:

授权服务器URL: https://login.microsoftonline.com/xxxxx.onmicrosoft.com/oauth2/v2.0/token
范围: https://test-che-xxxxx.crm4.dynamics.com/.default

我希望这对您有帮助,
彼得

小c菟菟
7楼-- · 2020-08-21 02:47

嗨,彼得,

我与Microsoft Azure以及"资源"都有完全相同的问题。 您在"范围"字段中输入了什么? 是来自Auth Server URL的相同Microsoft登录URL,但没有tenantID吗?

一周热门 更多>