如果通过认证方式调用Sf的api

 

导读

OAuth 2.0:是一个开放的授权框架,当用户想要访问Service Provider提供的资源时,OAuth客户端可以从IdP(Identity Provider)获得授权而不需要获取用户名和密码就可以访问该资源题。

作者:vivi,来源:osinnovation

图片

原理分析:在原来SuccessFactors odata api是可以通过账户密码授权的模式去查询,这种方式虽然便捷,但是安全性不好,所以SAP开始从认证模式,上图就是认证模式的一个流程

① 在successfactors系统中注册oauth2的客户端程序,这个程序有两个东西很重要,一个是509的加密文件,一个是api的key,这两个地方在生成smal的时候需要用到。

②如何产生smal,原来是可以通过oauth/idp的方式生成smal,但是也是因为安全问题,也将在2025年到期,所以需要通过sap的工具完成,可以通过:3031657 - How to generate SAML assertion using SAP-provided offline tool - SAP SuccessFactors,具体的操作下面有详细的步骤。

③ 通过步骤2可以生成smal的数据,需要根据smal的数据到/oauth/token抓取到token的数据,token就是我们敲门的钥匙,原来访问是通过账号密码,现在就是携带token数据替代账号密码。

④ 用获取的token去调用具体的服务地址,例如https://api55preview.sapsf.eu/odata/v2/User?top=2&$format=json

下面是系统具体实现步骤:

1. 登录SF实例,Manage OAuth2 Client Applications下注册OAuth客户端应用

图片

图片

图片

字段填写说明:

字段

说明

发布者

SuccessFactors

通用名称

证书有效的名称或IP地址

组织(非必填)

颁发证书的实体

组织单位(非必填)

颁发证书的实体的组织单位

位置(非必填)

颁发证书的实体的位置名称

州/省(非必填)

颁发证书的实体的州或省的名称

国家(非必填)

要向其颁发证书的实体的国家名称

有效期

X.509证书有效的天数

图片

下载证书,并注册,注册之后系统会生成api的key,注意这个api的key和509的正式下面有用。

图片

生成的.509证书是有公钥与私钥,私钥我们后面生成saml的时候需要使用,这里复制的时候不要复制所有,只是复制私钥即可。

图片

因为使用在Postman工具中配置生成SAML断言(assertion) 已经废弃,所以今天我们使用的是SAP的工具帮我们生成的smal。

2 现在需要通过最新sap工具生成saml断言,需要下载的工具是maven与jdk,注意jdk的版本

STEP 1: DOWNLOADING MAVEN FILE(下载mavne工具,注意版本,这个版本搭配的jdk是1.8)

  • Download the file from Downloading Apache Maven and unzip it to your local drive.
    In the example below, the folder has been extracted to the C drive:

     

    图片

      
     

STEP 2: VALIDATING JAVA JDK COMPATIBILITY AND MAINTAINING ENVIRONMENT VARIABLES(jdk与mavne的环境变量设置,如果已经设置可以忽略)

  1. At your computer: Click on File Explorer > This PC (right button) > Properties > Advanced System Settings > Environment Variables;

  2. At System Variables, ensure JAVA_HOME variable is set and points to the path of your JDK installation;

  3. At User Variables, click on new and set the path of the "bin" folder (from your JDK installation folders) to the variable "PATH" as shown below:

     

    图片


     

STEP 3: VALIDATING JDK INSTALLATION(查看jdk是否安装成功与mavne环境变量设置是否成功)

  1. Go to Command Prompt and execute the command below:
    echo %JAVA_HOME%

  2. If it prints the folder path of the JDK installation, it means the installation was successful:

     

    图片

    STEP 4: VALIDATING MAVEN INSTALLATION

    检查maven是否安装成功

    1. Open the Command Prompt and execute the command below:
      mvn -v

       

      图片




      This means Maven installation is successful. Now we are good to proceed with generating SAML assertion using SAP provided offline tool.
       

    STEP 5: GENERATING SAML ASSERTION(需要到note:3031657下载附件)

    1. Go to attachment section of this KBA and download the zip file;

    2. Extract folder from zip file to your local drive;

    3. Go to the folder and open "SAMLAssertion.properties" file;

       

      图片



       

      图片


       

    4. Fill the data there:

      • If you use this field, you shouldn't use the "userId" field, leaving it blank.

      • If you use this field, you shouldn't use the "userName" field, leaving it blank.

      • tokenUrl: your API server endpoint from guide page List of SAP SuccessFactors API Servers followed by "/oauth/token".

      • clientId: API Key which you received while registering the client in SF.

      • userId: the userId of the API user.

      • userName: the username of the API user.

      • privateKey: X.509 private key.

      • expireInMinutes: SAML assertions usually expires in 5-10 minutes. Anyway, here you should set it according your business requirements.

    5. See the sample file below:(附件SAMLAssertion.properties需要天虹红色标记的地方)

       

      图片

    1. Save the file and close.

    2. Open a new Command Prompt window and go to the directory where folder was extracted:(保存以后可以在文件所在的文件夹上面输入CMD命令,就会进入DOS黑白指令的的地方)

       

      图片

    1. 图片

    2. Execute the command below:
      mvn compile exec:java -Dexec.args="SAMLAssertion.properties"(执行下这个脚本)



      系统就会有下面的

      图片



       

    3. Once completed, it would generate SAML assertion. Copy this and store it securely in your local drive.(如果看到build success,说明smal生成成功)

       

      图片

    3 使用SAML断言生成用户Token

    Headers: Content-Type: application/x-www-form-urlencoded

    Body(raw):client_id=xxx&user_id=xxx&token_url=xxx&private_key, client_id就是上面生成的API Key,user_id是SF账户的ID,token_url是SF的Endpoint+/outh/token, private_key是下载的证书文件中private部分内容,也就是上图build success上面那部分

    图片

    图片

    4 最后一步就是通过生成的Token来调用API Entity

    https://api55preview.sapsf.eu/odata/v2/User?top=2&$format=json

    Authorization:Bearer 后面是token信息

    图片

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/963521.html

    如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

    相关文章

    SpringBoot 整合 SpringMVC:SpringMVC的注解管理

    分类&#xff1a; 中央转发器(DispatcherServlet)控制器视图解析器静态资源访问消息转化器格式化静态资源管理 中央转发器&#xff1a; 中央转发器被 SpringBoot 自动接管&#xff0c;不需要我们在 web.xml 中配置&#xff1a; <servlet><servlet-name>chapter2&l…

    【含文档+PPT+源码】基于微信小程序农家乐美食餐厅预约推广系统

    项目介绍 本课程演示的是一款基于微信小程序农家乐美食餐厅预约推广系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 …

    什么是门控循环单元?

    一、概念 门控循环单元&#xff08;Gated Recurrent Unit&#xff0c;GRU&#xff09;是一种改进的循环神经网络&#xff08;RNN&#xff09;&#xff0c;由Cho等人在2014年提出。GRU是LSTM的简化版本&#xff0c;通过减少门的数量和简化结构&#xff0c;保留了LSTM的长时间依赖…

    基于深度学习的输电线路缺陷检测算法研究(论文+源码)

    输电线路关键部件的缺陷检测对于电网安全运行至关重要&#xff0c;传统方法存在效率低、准确性不高等问题。本研究探讨了利用深度学习技术进行输电线路关键组件的缺陷检测&#xff0c;目的是提升检测的效率与准确度。选用了YOLOv8模型作为基础&#xff0c;并通过加入CA注意力机…

    【LLM-agent】(task6)构建教程编写智能体

    note 构建教程编写智能体 文章目录 note一、功能需求二、相关代码&#xff08;1&#xff09;定义生成教程的目录 Action 类&#xff08;2&#xff09;定义生成教程内容的 Action 类&#xff08;3&#xff09;定义教程编写智能体&#xff08;4&#xff09;交互式操作调用教程编…

    C++游戏开发实战:从引擎架构到物理碰撞

    &#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 C 是游戏开发中最受欢迎的编程语言之一&#xff0c;因其高性能、低延迟和强大的底层控制能力&#xff0c;被广泛用于游戏…

    Time Constant | RC、RL 和 RLC 电路中的时间常数

    注&#xff1a;本文为 “Time Constant” 相关文章合辑。 机翻&#xff0c;未校。 How To Find The Time Constant in RC and RL Circuits June 8, 2024 &#x1f4a1; Key learnings: 关键学习点&#xff1a; Time Constant Definition: The time constant (τ) is define…

    DeepSeek Janus-Pro:多模态AI模型的突破与创新

    近年来&#xff0c;人工智能领域取得了显著的进展&#xff0c;尤其是在多模态模型&#xff08;Multimodal Models&#xff09;方面。多模态模型能够同时处理和理解文本、图像等多种类型的数据&#xff0c;极大地扩展了AI的应用场景。DeepSeek(DeepSeek-V3 深度剖析&#xff1a;…

    w188校园商铺管理系统设计与实现

    &#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

    DeepSeek R1本地化部署 Ollama + Chatbox 打造最强 AI 工具

    &#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; Ollama &#x1f98b; 下载 Ollama&#x1f98b; 选择模型&#x1f98b; 运行模型&#x1f98b; 使用 && 测试 二&#xff1a;&#x1f525; Chat…

    图漾相机——Sample_V1示例程序

    文章目录 1.SDK支持的平台类型1.1 Windows 平台1.2 Linux平台 2.SDK基本知识2.1 SDK目录结构2.2 设备组件简介2.3 设备组件属性2.4 设备的帧数据管理机制2.5 SDK中的坐标系变换 3.Sample_V1示例程序3.1 DeviceStorage3.2 DumpCalibInfo3.3 NetStatistic3.4 SimpleView_SaveLoad…

    DeepSeek 遭 DDoS 攻击背后:DDoS 攻击的 “千层套路” 与安全防御 “金钟罩”

    当算力博弈升级为网络战争&#xff1a;拆解DDoS攻击背后的技术攻防战——从DeepSeek遇袭看全球网络安全新趋势 在数字化浪潮席卷全球的当下&#xff0c;网络已然成为人类社会运转的关键基础设施&#xff0c;深刻融入经济、生活、政务等各个领域。从金融交易的实时清算&#xf…

    小程序项目-购物-首页与准备

    前言 这一节讲一个购物项目 1. 项目介绍与项目文档 我们这里可以打开一个网址 https://applet-base-api-t.itheima.net/docs-uni-shop/index.htm 就可以查看对应的文档 2. 配置uni-app的开发环境 可以先打开这个的官网 https://uniapp.dcloud.net.cn/ 使用这个就可以发布到…

    深入解析Python机器学习库Scikit-Learn的应用实例

    深入解析Python机器学习库Scikit-Learn的应用实例 随着人工智能和数据科学领域的迅速发展&#xff0c;机器学习成为了当下最炙手可热的技术之一。而在机器学习领域&#xff0c;Python作为一种功能强大且易于上手的编程语言&#xff0c;拥有庞大的生态系统和丰富的机器学习库。其…

    大模型训练(5):Zero Redundancy Optimizer(ZeRO零冗余优化器)

    0 英文缩写 Large Language Model&#xff08;LLM&#xff09;大型语言模型Data Parallelism&#xff08;DP&#xff09;数据并行Distributed Data Parallelism&#xff08;DDP&#xff09;分布式数据并行Zero Redundancy Optimizer&#xff08;ZeRO&#xff09;零冗余优化器 …

    在亚马逊云科技上用Stable Diffusion 3.5 Large生成赛博朋克风图片(上)

    背景介绍 在2024年的亚马逊云科技re:Invent大会上提前预告的Stable Diffusion 3.5 Large&#xff0c;现在已经在Amazon Bedrock上线了&#xff01;各位开发者们现在可以使用该模型&#xff0c;根据文本提示词文生图生成高质量的图片&#xff0c;并且支持多种图片风格生成&…

    java练习(5)

    ps:题目来自力扣 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这…

    【力扣】438.找到字符串中所有字母异位词

    AC截图 题目 思路 我一开始是打算将窗口内的s子字符串和p字符串都重新排序&#xff0c;然后判断是否相等&#xff0c;再之后进行窗口滑动。不过缺点是会超时。 class Solution { public:vector<int> findAnagrams(string s, string p) {vector<int> vec;if(s.siz…

    DeepSeek回答禅宗三重境界重构交易认知

    人都是活在各自心境里&#xff0c;有些话通过语言去交流&#xff0c;还是要回归自己心境内在的&#xff0c;而不是靠外在映射到股票和技术方法&#xff1b;比如说明天市场阶段是不修复不接力节点&#xff0c;这就是最高视角看整个市场&#xff0c;还有哪一句话能概括&#xff1…

    C++进阶: 红黑树及map与set封装

    红黑树总结整理 红黑色概述&#xff1a; 红黑树整理与AVL树类似&#xff0c;但在对树的平衡做控制时&#xff0c;AVL树会比红黑树更严格。 AVL树是通过引入平衡因子的概念进行对树高度控制。 红黑树则是对每个节点标记颜色&#xff0c;对颜色进行控制。 红黑树控制规则&…