SCIM身份验证中的属性可以用于Cloud Connector X.509证书创建吗?

2020-09-10 23:18发布

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

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


SAP Cloud Platform移动服务专家您好,( Michael Jess 马丁·格拉斯霍夫(),

在从内部部署SAP Mobile Platform迁移到SAP Cloud Platform Mobile Services的SAP客户中,我们具有以下要求:

某些移动应用程序使用不同的后端服务源。 其中一些是SAP系统。 对于他们,定制应用程序将生成SAP系统信任的SAP登录票证以进行身份​​验证。 但是在同一应用程序中,也使用了使用基本身份验证(针对Windows Active Directory验证)的后端。

在SAP Cloud Platform移动服务I中,可以使用执行基本身份验证的SCIM端点并将应用程序配置为也使用基本身份验证。 通过该身份验证,可以在为主体传播设置目标并且使用属性$ {name}时,使用Cloud Connector生成的X.509证书访问SAP Systems。 也可以通过这种方式访问​​基本身份验证端点。

但是我们面临的挑战如下:对于大多数用户,电子邮件地址也用作SAM帐户名。 但是有些用户在这里有所不同。 因此,我想到的最简单的解决方案是将Cloud Connector证书配置为使用属性$ {mail}而不是$ {name},但是当我这样做时,我在Postman中测试后端目标时看到以下错误:

无法在系统npl752.virtual:44300上为用户gwolf生成授权令牌。

在云连接器中,我收到以下错误消息:

2019-03-25 14:50:23,374 + 0100#ERROR#com.sap.core.connectivity.protocol.http.handlers.HttpAuthenticationHandler#tunnel-client-4-1#0x0f97e0ad#无法生成授权令牌Java .lang.IllegalStateException:对象CN所需的变量" null"在上下文中不可用。

我的SCIM服务返回此JSON:

 {
     "地址":[
         {
             " country":" DE",
             " streetAddress":"街道编号",
             " postalCode":" 83342",
             " locality":" Tacherting",
             " type":"家"
         }
     ],
     " passwordStatus":"已启用",
     " passwordPolicy":" https://accounts.sap.com/policy/passwords/sap/web/1.1",
     " passwordSetTime":" 2017-08-12T09:01:10Z",
     "显示名称": "",
     " sourceSystem":" 15",
     " timeZone":"欧洲/柏林",
     "有效":是,
     "组":[],
     " userName":" gregor.wolf@gmail.com",
     " locale":" de",
     " passwordLoginTime":" 2017-10-02T11:22:40Z",
     "电话号码": [
         {
             " type":"工作",
             "值":" + 49"
         }
     ],
     " urn:ietf:params:scim:schemas:extension:enterprise:2.0:User":{},
     " passwordFailedLoginAttempts":" 0",
     "电子邮件":[
         {
             " value":" gregor.wolf@gmail.com",
             "主要":正确
         }
     ],
     " loginTime":" 2017-10-02T11:22:40Z",
     "元":{
         " created":" 2019-03-25T09:00:00Z",
         " location":" https://xyz.accounts.ondemand.com/service/scim/Users/P000111",
         " lastModified":" 2017-08-29T16:37:16Z",
         " version":" 1.0",
         " resourceType":"用户"
     },
     "方案":[
         " urn:ietf:params:scim:schemas:core:2.0:User",
         " urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
         " urn:sap:cloud:scim:schemas:extension:custom:2.0:User"
     ],
     "名称": {
         " givenName":"格雷戈",
         " familyName":" Wolf",
         " honorificPrefix":"先生。
     },
     " id":" P000111",
     " userType":"公共",
     " mailVerified":" TRUE"
 }
 

是否可以使用SCIM中的属性之一基于该属性创建Cloud Connector X.509证书?

最诚挚的问候
格雷戈尔

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

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


SAP Cloud Platform移动服务专家您好,( Michael Jess 马丁·格拉斯霍夫(),

在从内部部署SAP Mobile Platform迁移到SAP Cloud Platform Mobile Services的SAP客户中,我们具有以下要求:

某些移动应用程序使用不同的后端服务源。 其中一些是SAP系统。 对于他们,定制应用程序将生成SAP系统信任的SAP登录票证以进行身份​​验证。 但是在同一应用程序中,也使用了使用基本身份验证(针对Windows Active Directory验证)的后端。

在SAP Cloud Platform移动服务I中,可以使用执行基本身份验证的SCIM端点并将应用程序配置为也使用基本身份验证。 通过该身份验证,可以在为主体传播设置目标并且使用属性$ {name}时,使用Cloud Connector生成的X.509证书访问SAP Systems。 也可以通过这种方式访问​​基本身份验证端点。

但是我们面临的挑战如下:对于大多数用户,电子邮件地址也用作SAM帐户名。 但是有些用户在这里有所不同。 因此,我想到的最简单的解决方案是将Cloud Connector证书配置为使用属性$ {mail}而不是$ {name},但是当我这样做时,我在Postman中测试后端目标时看到以下错误:

无法在系统npl752.virtual:44300上为用户gwolf生成授权令牌。

在云连接器中,我收到以下错误消息:

2019-03-25 14:50:23,374 + 0100#ERROR#com.sap.core.connectivity.protocol.http.handlers.HttpAuthenticationHandler#tunnel-client-4-1#0x0f97e0ad#无法生成授权令牌Java .lang.IllegalStateException:对象CN所需的变量" null"在上下文中不可用。

我的SCIM服务返回此JSON:

 {
     "地址":[
         {
             " country":" DE",
             " streetAddress":"街道编号",
             " postalCode":" 83342",
             " locality":" Tacherting",
             " type":"家"
         }
     ],
     " passwordStatus":"已启用",
     " passwordPolicy":" https://accounts.sap.com/policy/passwords/sap/web/1.1",
     " passwordSetTime":" 2017-08-12T09:01:10Z",
     "显示名称": "",
     " sourceSystem":" 15",
     " timeZone":"欧洲/柏林",
     "有效":是,
     "组":[],
     " userName":" gregor.wolf@gmail.com",
     " locale":" de",
     " passwordLoginTime":" 2017-10-02T11:22:40Z",
     "电话号码": [
         {
             " type":"工作",
             "值":" + 49"
         }
     ],
     " urn:ietf:params:scim:schemas:extension:enterprise:2.0:User":{},
     " passwordFailedLoginAttempts":" 0",
     "电子邮件":[
         {
             " value":" gregor.wolf@gmail.com",
             "主要":正确
         }
     ],
     " loginTime":" 2017-10-02T11:22:40Z",
     "元":{
         " created":" 2019-03-25T09:00:00Z",
         " location":" https://xyz.accounts.ondemand.com/service/scim/Users/P000111",
         " lastModified":" 2017-08-29T16:37:16Z",
         " version":" 1.0",
         " resourceType":"用户"
     },
     "方案":[
         " urn:ietf:params:scim:schemas:core:2.0:User",
         " urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
         " urn:sap:cloud:scim:schemas:extension:custom:2.0:User"
     ],
     "名称": {
         " givenName":"格雷戈",
         " familyName":" Wolf",
         " honorificPrefix":"先生。
     },
     " id":" P000111",
     " userType":"公共",
     " mailVerified":" TRUE"
 }
 

是否可以使用SCIM中的属性之一基于该属性创建Cloud Connector X.509证书?

最诚挚的问候
格雷戈尔

付费偷看设置
发送
6条回答
四川大学会员
1楼-- · 2020-09-10 23:49

当X.509属性映射在原始用户属性(此处为:SCIM或AD)未映射到"名称"或"邮件"的意义上时,我遇到了类似的错误 授权响应中完全缺少(Cloud Connector属性)或原始用户属性。

SAML示例:

(SAML身份验证源属性" signInName"映射到"名称")

(云连接器设置)

在您的情况下,我将尝试像

一样直接在根级别将" mail"和" name"属性添加到SCIM响应中
//...
 " id":" P000111",
 " mail":" you@example.org",
 "名称":" you@example.org"
//...
 

看看在客户端产生了什么。

hth,v。

灬番茄
2楼-- · 2020-09-10 23:24

btw:打开CC的最大跟踪和调试级别-然后,您将看到有效负载到达CC,并可以识别要传输的数据(或 不是:)从$ authSource获取$ name和$ mail。

槿木_熙
3楼-- · 2020-09-10 23:32

不确定我是否完全理解该问题,但是如果您要对后端SAP系统进行身份验证并使用SCIAS,则尝试使用LOGIN_NAME字段-然后通过SAP用户ID或 等于ALIAS设置。 这样,我根本不会更改短期证书(这意味着在生成证书时将其保留为Attribute $ {name})-我只是通过Name ID发送其他内容。 我在一个最近的项目上都尝试过并且都成功。 第一个 将用户的ALIAS字段更新为等于P号-在您的情况下为P000111。 在这种情况下,当我加载短期证书(使用CERTRULE)时,我选择ALIAS作为用户设置。 第二个 这更简单了,我将SCIAS中的用户的LOGIN_NAME更新为等于其SAP用户ID。 相同的短期证书,但是这次我选择Userid作为User设置。

还有其他一些问题,以防万一我误解了:

-您是否使用CERTRULE将生成的短期证书(使用属性$ {mail})加载到后端系统,并且 您做了选择的用户设置。

-您是否尝试过更改SAPCP信任设置(用于子帐户)用户ID源,以使用属性代替"主题"选项。 选择属性,然后在其中添加属性名称。 我会试一试。

感谢

Phil

南山jay
4楼-- · 2020-09-10 23:36

其他更新。 对于针对SAP CP Mobile Service端点的测试,我使用邮递员。 请求CSRF令牌后,我用以下POST请求正文调用Connections端点:

 {
 " DeviceType":" Android"
 } 

这是我得到的答复:

 {
     " d":{
         " __metadata":{
             " uri":" https://hcpms-pXXXtrial.hanatrial.ondemand.com/odata/applications/v4/de.linuxdozent.test.AuthTest/Connections('987e45b5-c09e-4893-8dad-xxx')",
             " type":" applications.Connection"
         },
         " ETag":" 2019-03-26 12:22:23.0",
         " ApplicationConnectionId":" 987e45b5-c09e-4893-8dad-xxx",
         " UserName":" gwolf",
         " AndroidGcmPushEnabled":否,
         " AndroidGcmRegistrationId":null,
         " AndroidGcmSenderId":null,
         " ApnsPushEnable":否,
         " ApnsDeviceToken":null,
         " ApplicationVersion":" 1.0",
         " BlackberryPushEnabled":否,
         " BlackberryDevicePin":null,
         " BlackberryBESListenerPort":0,
         " BlackberryPushAppID":null,
         " BlackberryPushBaseURL":null,
         " BlackberryPushListenerPort":0,
         " BlackberryListenerType":0,
         " CollectClientUsageReports":否,
         " ConnectionLogLevel":" NONE",
         " CustomizationBundleId":null,
         " CustomCustom1":null,
         " CustomCustom2":null,
         " CustomCustom3":null,
         " CustomCustom4":null,
         " DeviceModel":null,
         " DeviceType":" Android",
         " DeviceSubType":null,
         " DevicePhoneNumber":null,
         " DeviceIMSI":null,
         " E2ETraceLevel":null,
         " EnableAppSpecificClientUsageKeys":否,
         " FeatureVectorPolicyAllEnabled":是的,
         " FormFactor":null,
         " LogEntryExpiry":7
         " LogMaxFileNum":0,
         " LogMaxFileSize":0,
         " MaxConnectionWaitTimeForClientUsage":0,
         " MpnsChannelURI":null,
         " MpnsPushEnable":否,
         " PasswordPolicyEnabled":是,
         " PasswordPolicyDefaultPasswordAllowed":否,
         " PasswordPolicyMinLength":8
         " PasswordPolicyDigitRequired":否,
         " PasswordPolicyUpperRequired":否,
         " PasswordPolicyLowerRequired":否,
         " PasswordPolicySpecialRequired":否,
         " PasswordPolicyExpiresInNDays":0,
         " PasswordPolicyMinUniqueChars":0,
         " PasswordPolicyLockTimeout":300,
         " PasswordPolicyRetryLimit":10,
         " PasswordPolicyFingerprintEnabled":是,
         " ProxyApplicationEndpoint":null,
         " ProxyPushEndpoint":null,
         " PublishedToMobilePlace":否,
         " UploadLogs":否,
         " WnsChannelURI":null,
         " WnsPushEnable":否,
         " InAppMessaging":否,
         " UserLocale":null,
         " TimeZone":null,
         " LastKnownLocation":null,
         " CreatedAt":"/img/Date(15536​​02943920)/",
         " PushGroup":null,
         "电子邮件":null,
         " BlockWipeEnabled":否,
         " BlockDisconnectedPeriod":0,
         " WipeDisconnectedPeriod":0,
         "功能":{
             "结果":[]
         },
         " FeatureVectorPolicy":{
             "结果":[]
         }
     }
 }
 

您会注意到结尾处的属性Email为空。 即使在我已经将SCIM数据调整为直接在第一级上包含mail和Email属性之后。

Alawn_Xu
5楼-- · 2020-09-10 23:22

hm,所以我假设情况是这样的:

-通过针对$ endpoint1的基本身份验证进行身份验证
-通过CC通过CC将主体传播到CC到本地SAP系统中
-凭据来自$ endpoint1
-将$ endpoint1:username映射到CC -cert:$ name打算
-将$ endpoint1:email映射到CC-cert:$ mail目标

-将CC证书(以及来自证书的$ name和$ mail)传递给SCPms
-SCPms无法正确识别$ mail

我是在正确的轨道上吗? 还是在某处?

葫芦娃快救爷爷
6楼-- · 2020-09-10 23:42

嗨,格雷戈尔,

您是否在IdP下的标签中添加了(e)mail属性?

一周热门 更多>