跳到内容
技术文章
作者的个人资料照片万博新体育手机客户端piotr tesny

SamlbearerSertion身份验证S / 4HANA和S / 4HANA云。

这是一个以前发表的后续博客帖子如何使用SAP BTP目的地服务生成SAML承载声音令牌?

当涉及到无人值守的并存时,系统或与S / 4HANA系统的系统或App2App集成,选择无人驾驶和密码的身份验证方法oauth2saml2bearersertion.saml2bearerasteraction.

很高兴知道:

抽象的

oauth2saml2bearersertion和saml2bearerasterion都依赖于SAML承载断言认证范式,以实现无人值守的业务用户的身份传播。

无论哪种情况,我们都可以利用多价SAP BTP目的地服务

那么是什么使他们不同的是,OAuth是OAuth客户端作为一个资源看门人…它将授予无记名基于范围的访问令牌(=服务/权限)OAuth客户端和资源所有者(=业务用户)被授予访问权。

  • 因为OAUTH客户端是一个授权代理(身份验证已被持票人支取的)。请记住,您需要将对资源的访问权限授予OAuth客户机(通过作用域和服务目录对象)和新万博苹果版通过分配所需的业务角色授予业务用户。
  • 另一方面,使用SAML2BearerAssertion,您需要关心的只是业务用户和业务角色分配。通过在S4HC业务API调用的授权头中直接传递用户的身份(带有saml断言),可以获得对业务用户已被授予访问权限(通过业务角色分配)的资源的访问权。

这提出了以下问题:使用一个或另一个的令人信服的原因或场景是什么?哪一个选择两者允许并可用于给定API?

Basic和X509客户端证书身份验证方法都是以用户为中心的(即使用户是技术用户)。因此,它们并不非常适合于无人驾驶系统,App2App集成方案。

总的来说,有相当多的S4HC API,没有本地支持OAuth2.0!

为此,SAML承载声音认证方法可能是所有这些非oauth2.0的完美身份验证替代方案,使S4HC API使它们能够通过侧面集成无人值守。

让我们更详细地看看……

把它们放在一起

在S4HC中创建通信系统并针对系统到系统,并排的密码集成,无需用户与API交互,有两个密码的身份验证选项如下:

a. OAuth 2.0身份提供者。(通信系统)。

在你使用授权头中的承载访问令牌(通过OAuth 2.0客户端被授予对资源的访问权)进行认证之前,你必须配置与所需的身份提供者(x509证书)的信任关系,如下图所示:新万博苹果版

b. SAML持有者断言提供商。(通信系统。

在授权标题中使用SAML断言进行身份验证之前,您必须将可信关系配置到所需的身份提供程序(X509证书)如下所示:

因此,对于第二个选项,可以使用支持非oauth的API,并在业务API调用的授权头中传递一个saml载体断言。

例如,在下面的情况下API_MATERIAL_DOCUMENT_SRVODATA API只支持基本身份验证(或x509客户端证书)。

但是,通过配置了SAML持票人断言提供商在通信系统中,我们可以使用BTP目的地服务或API管理生成SAML断言,然后远程调用API。

请参阅以前发布如何使用SAP BTP目的地服务生成SAML承载声音令牌?关于S/4HANA OP和SAP BTP目标服务生成saml断言的讨论。

结论。

但是启用了OAuth的API呢?

在API调用的授权头中直接使用saml持有者断言调用一些OAuth启用的API的优点或缺点是什么?首先去OAuth客户端获得一个持有者访问令牌,然后使用访问令牌调用相同的API ?

现在我能想到的是,对于OAuth客户机,不管有多少ODATA端点,OAuth令牌端点都是saml断言的唯一接收者。此外,使用OAuth,您可以为多个范围请求一个承载访问令牌。
使用SAML持有者断言,每个ODATA API必须有一个不同的接收者,这导致每个ODATA API调用一个SAML断言……

仍然,samlbearerasteraction.在建立对资源的无人访问时可能会删除大量复杂性(特别是在S / 4HANA内在ABAP系统)。新万博苹果版

例如,SAP帮助页面已经充满了引用集成SAP Business Application Studio

期待您的回音。请在下面的“添加评论”部分中发布您可能拥有的任何问题和评论。

祝您一路顺风!

__________

附录

下面是一个使用SAP集成套件的SAP API管理部分在授权头中使用saml断言执行ODATA API的示例。

目标URL在目的地定义或在APM,即:“https://my30xxx-api.s4hana.ondemand.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV”必须匹配saml断言的收件人如下:收件人= " https://my30xxxx-api.s4hana.ondemand.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV "

SAP API管理

我创建了SAML断言,标准的SSO策略定制了我的需求,如下所示:

Request.header.Header.Authorization:Saml2.0 Phnhbwwyokfzc2vydglvbib4bwxuczpzyw1smj0idxjuom9hc2lzom5h ...

例如:GET /A_MaterialDocumentHeader

参考:这里有一个解码的saml持票人断言:
<?xml version = " 1.0 " ?> < saml2:断言xmlns: saml2 = " urn: oasis:名称:tc: SAML 2.0断言“xmlns: x = " http://www.w3.org/2001/XMLSchema " xmlns: xsi = " http://www.w3.org/2001/XMLSchema-instance " ID = " _4ed159487b7f515926c3ced4ae12a4ed " IssueInstant = 2021 - 06 - 23 t20:10:11.752z“Version = " 2.0 " > <脚本/ > < saml2:发行人> quovadis / ateam-isveng < / saml2:发行人> < ds:签名xmlns: ds = " http://www.w3.org/2000/09/xmldsig " > < ds: SignedInfo > < ds: CanonicalizationMethod算法= " http://www.w3.org/2001/10/xml-exc-c14n " / > < ds: SignatureMethod算法= " http://www.w3.org/2000/09/xmldsig rsa-sha1 " / > < ds:引用的URI = " # _4ed159487b7f515926c3ced4ae12a4ed " > < ds:转换> < ds:变换#封装签名算法= " http://www.w3.org/2000/09/xmldsig " / > < ds:变换算法= " http://www.w3.org/2001/10/xml-exc-c14n " > < ec: InclusiveNamespaces xmlns: ec = " http://www.w3.org/2001/10/xml-exc-c14n " PrefixList = " x " / > < / ds:变换> < / ds:转换> < ds: DigestMethod算法= " http://www.w3.org/2000/09/xmldsig sha1 " / >< ds: DigestValue > b02SWxKczW2o2LyOiTj76c6uNSs = < / ds: DigestValue > < / ds:参考> < ds: SignedInfo > < ds: SignatureValue > nIfK2bPWr8tZpxy6dd / KeEhlnJUKSw9McK1VsK7axUrQQ5 + O1grsJFr3SizDk5dvSDiszcxEXp + jL0HGhKQsYe + lxm + rFtKv / ycT LJ / XfGUYj1HG + R4UiH1 / IXAQ3xIXbViolKexlDpUFwj99OsX11EkHTfJoqxYo8mJBQE4xhxx4ppcrx9B + MvGTvA / JHwN4yKcE = < / ds: SignatureValue > < ds: KeyInfo >< ds: X509Data > < ds: X509Certificate > MIIFGzCCAwMCBGBb1dwwDQYJKoZIhvcNAQELBQAwUjELMAkGA1UEBhMCVVMxDDAKBgNVBAoMA1NB y2Bie3pZsV0QGgSCMZ8kNQobunEPnfkXysLhUvWzniY0UI9uLY7F9934p3PLnZAJOhLJO0X6cHCF bMC + 6 gxxtdisqviviokuurdahvx6b270sudip6tdpapn9e + IaISzPRpkXT6c0QNVYg37DBU / qhSN < / ds: X509Certificate > < / ds: X509Data > < ds: KeyInfo > < / ds:签名> < saml2:主题>firstname.lastname@acme.com:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">  < / saml2: SubjectConfirmation > < / saml2:主题> < saml2:条件NotBefore =“2021 - 06 - 22 t20:10:11.751z NotOnOrAfter =“2021 - 06 - 24 t20:10:11.751z”> < saml2: AudienceRestriction > < saml2:观众> https://my30xxxx.s4hana.ondemand.com < / saml2:观众>< / saml2: AudienceRestriction > < / saml2:条件> < saml2: AuthnStatement AuthnInstant =“2021 - 06 - 23 t20:10:11.751z”SessionNotOnOrAfter =“2021 - 06 - 24 t20:10:11.751z”> < saml2: AuthnContext > < saml2: AuthnContextClassRef > urn:没有< / saml2: AuthnContextClassRef > < / saml2: AuthnContext > < / saml2: AuthnStatement > < saml2: AttributeStatement > < saml2:属性 Name="client_id">    

__________

额外资源。新万博苹果版

SAP API Business Hub上的API |SAP帮助

要访问API服务,需要对自己进行身份验证。每个API支持不同的身份验证方法。

身份验证方法 描述
基本的 使用用户名和密码进行身份验证。
X509. X509.证书在许多因特网协议中使用,包括TLS/SSL。一个X509.证书包含一个公钥和私钥。公钥包含身份信息,例如主机名,组织或个人。公共/私钥对用于建立安全通信。
OAuth2 OAuth 2.0是广泛采用的安全协议,可通过互联网保护资源。新万博苹果版它由许多社交网络提供商和公司网络使用。OAuth 2.0允许应用程序代表使用第三方用户帐户的用户请求身份验证,而无需用户必须将其凭据授予应用程序。
使用SAML的单一登录 SAML是一个基于xml的框架,用于交换身份验证和授权信息。身份提供者发出一个安全令牌,该令牌支持在服务提供者处进行身份验证。

由SAP创建的API是根据要传达的消息的主要目的进行分类:

服务类别 描述
应用到应用程序(A2A) A2A服务促进了不同系统之间的业务信息交换,以连接公司边界内的业务流程。
Application-to-Cross应用程序(A2X) A2x服务有助于在系统和未指定的客户端之间交换业务信息。它们通常用于构建基于后端的用户界面(UIS),而没有介入通信层。因此,A2x消息包含用于了解消息的所有必要信息,例如要在UI上显示的代码名称或文本。
企业对业务(B2B) B2B服务有助于跨国公司交流业务文件。

/
成为第一个评论者
你一定是登录评论或回复帖子。