导读
OAuth 2.0:是一个开放的授权框架,当用户想要访问Service Provider提供的资源时,OAuth客户端可以从IdP(Identity Provider)获得授权而不需要获取用户名和密码就可以访问该资源题。
作者:vivi,来源:osinnovation
1 故事背景
最近有几个朋友总是问如何调用SFAPI,今天写一篇文章总结下如何调用SF的SFAPI与ODATAAPI,考虑到基础权限调用可能会被废弃,今天介绍的是通过oauth的方式访问sf的api,下图是oauth的调用逻辑图。
2 技术实现
2.1 登录CPI的系统,找到密钥库,需要新增对应密钥对。
2.2 别名可以随便取名字,但是公用名称不能随便设置,这个地方要设置SF系统的登录用户名,这里一定要注意他有api的访问权限,否则后面无法连接到SF系统。
2.3 生成后证书,需要下载刚才生成的证书。
2.4 需要用记事本的方式打开刚才下载的证书,我们需要把里面的内容贴到SF系统中。
2.5 登录sf系统,设置oauth,其中x.509中是cpi的加密文件,我们不要用sf的geneerate生成的509文件,需要用cpi生成的x509。点完成后,系统会自动生成API KEY的值。
2.6 我们需要到安全材料中生成oauth saml的断言,因为oauth一般有四种模式,我们采用的是oauth2 saml的方式。
2.7 需要填写的字段是密钥、令牌服务、公司标识、密钥对别名等信息。
客户端密钥:sf生成的oauth的api key值
令牌服务 URL:sfapi地址+/oauth/token,例如https://api10preview.sapsf.com/oauth/token
密钥对别名:下面的sfapi的值
2.8 完成上述功能后,我们需要就是需要到CPI环境中设置链接,注意我们这是用的SFAPI。
2.9 完成上述配置后,我们就需要通过oauth方式访问sfapi,凭据名称是CPI系统安全材料设置的oauth saml的信息。
2.10 连接通过后,系统会自动抓取到SFAPI里面的表,我们需要选到下面选中的表,因为这个表是个汇总表,所以可能抓增量的模式。
2.11 选完表后,我们需要去勾选里面的字段,其实字段就是一个一个表,因为是汇总表,所以字段就是汇总表里面的子表。
2.12 完成后就可以部署CPI的服务,系统就向SF发送查询指令,我们需要到SF系统查询相关日志。
<QueryString>SELECT DRTMPurgeStatusOverview,address_information,cust_PensionContribute,cust_WithholdIncomeTax,employment_information,job_information,national_id_card,person,personal_information,person/employment_information/associated_employee_information(person_id_external),person/employment_information/associated_employee_information/associated_employee_employment_information(employment_id),person/employment_information/associated_employee_information/associated_employee_employment_information/associated_employee_job_information(emplStatus,company,company_territory_code) from CompoundEmployee WHERE replicationTargetSystem = 'LOGSPRD100' AND replicationContentType IN ('EMPLOYEE_MASTER_DATA','EMPLOYEE_ORG_ASSIGNMENT') AND person_id_external IN ('ACC030630') AND isContingentWorker IN ('0','1') AND effective_end_date >= to_date('2025-02-01') AND employment_end_date >= to_date('2025-02-01') AND hiringNotCompleted = 'false' AND assignment_class IN ('ST','GA')</QueryString><SFAPIParameterString>agent=ERPPayOrgHCI;resultOptions=allJobChangesPerDay;segmentsForEnhancedEffectiveEndDateFilter=job_information</SFAPIParameterString></EmployeeMasterDataAndOrgAssignmentBundleReplicationSelection>
2.13 如果需要选中过滤条件,可以限制对应的条件。