点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好专家
我们有一个移动应用程序(使用Xamarin开发工具),并希望使用来自受Azure应用程序代理保护的SAP服务器的Odata服务。 我们在通过代理服务器预身份验证并到达SAP服务器时遇到了一些问题。 我需要一些意见/建议,我们如何才能通过?
这是一个非常复杂的环境,所以请允许我在开始时提供一些背景知识。
涉及的系统
- SAP FEX是SAP Fiori服务器。 它提供了一些Odata服务。 SAP OAuth令牌也从此处发出。 它接受来自ADFS的SAML身份验证。
- ADFS – SAP FEX的IDP。 信任关系建立在FEX和ADFS之间。 浏览器SSO工作正常。
- Azure AD – Azure AD,提供用于从Internet访问的身份验证服务,例如MFA(多因素身份验证)。 它使用ADFS作为身份验证代理。
- Azure应用程序代理–保护SAP资源的代理服务。 它接受Azure AD身份验证结果,即Azure AD JWT access_token。
内部网场景
Internet场景
我们遵循下面链接中的SAP文档。 而且,我们能够在Intranet中获得Odata服务,该服务在图片中没有Azure AD和Azure应用程序代理。
我们还能够通过Microsoft ADAL库从Azure AD获取访问令牌,并且代理服务器可以接受该令牌。 我们在http请求的授权标头中添加了access_token,然后该请求到达了SAP系统,并且由于该请求未带有SAP要求的身份验证,因此我们从SAP系统中收到了HTTP 401错误。
但是,如果我们将SAP身份验证携带到http请求的授权标头中,则无法通过代理身份验证。 我们也不能在同一请求中携带两个授权标头,因为它不允许我这样做。
所以问题是我们如何在互联网场景中同时通过代理身份验证和SAP身份验证并到达Odata服务? 是否有人曾经有过类似的经历并与我分享一些想法?
顺便说一句,浏览器对Odata服务的访问似乎可以从Internet正常运行。 因此,我相信必须有一种方法可以使其在移动应用中正常工作。
谢谢
沉阳
(22.2 kB)
我遵循了下面的文档,它在Intranet场景中正常工作。
https://wiki.scn.sap.com/wiki/display/Security/Leave+Request+Approvals+on+Android+-+OAuth+2.0+powered
嗨,托尼,
感谢您的帮助。 是的,我正在使用Azure应用程序代理。
我无法听从您的第一个建议。 Azure代理和我的SAP应用程序都需要身份验证。 为什么我需要禁用AP SSO?
对于第二个建议,令牌SICF服务的登录方法无法修改。 请检查下面的屏幕。
此服务仅支持基本身份验证和SSL证书身份验证。
您好Chenyang,
请从stackoverflow中检查此线程:https://stackoverflow.com/questions/29282578/multiple-http-authorization-headers
讨论将多个值放入HTTP授权标头中。 结果参差不齐,因此我不确定Azure和SAP是否支持此方法。 但是,在您的图表中,步骤3&4已经提供了解决此问题的方法。 在步骤4中,您是否设法获得SAP访问令牌? 您遇到什么错误? 在步骤4中,无需将两个授权标头包含在一个请求中,因为此时您已经通过了Azure代理身份验证,并且只要该请求包含Azure会话cookie,它就可以了。
T
一周热门 更多>