返回顶部
首页 > 资讯 > 精选 >如何理解SCP Application Router
  • 699
分享到

如何理解SCP Application Router

2023-06-04 22:06:07 699人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关如何理解SCP Application Router,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。简单解释一下主要的参数:Routessource:可以是一个URL,也可

这期内容当中小编将会给大家带来有关如何理解SCP Application Router,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。


    如何理解SCP Application Router

    简单解释一下主要的参数:

    Routes

    • source:可以是一个URL,也可以是一个正则表达式,定义了当前的route是匹配什么样的请求路径

    • target: 当前请求如何被重写到目标地址

    • destination: 当前请求路由到manifest中的哪个目标地址

    • authenticationType: 有三种选择,xsuaa, none和basic,xsuaa和none分别代表了是否对当前请求在App Router上做用户安全认证,下一节会具体介绍。Basic是和SAP HANA集成的时候提供默认的安全验证支持。

    Destination

    • Name:用来跟xs-app.JSON中的destination配置相匹配

    • URL:目标应用程序真实的Clould Foundry地址

    • ForwardAuthToken: 如果请求中带有oauth token,是否将oauth token转发给目标应用程序. App Router也支持oauth token的部分校验功能,所以用户也可以根据具体情况选择不转发oauth token,就在App Router端校验

    除了基本的路由功能,App Router还提供了丰富的WEB应用程序相关的功能支持,比如连接管理,session管理,扩展Http头,跨域,Web Socket等等。

    App Router和SCP UAA的安全集成

    如上一节提到的,App Router在路由的时候提供了用户的安全认证支持。将路由的Authentication Type配置为xsuaa,App Router则会检查前端发过来的请求是否带有合法的session。如果没有,App Router会将用户导向SCP UAA的用户认证界面,当用户重新认证成功之后,会生成新的合法session,并将此session返回给前端应用程序。

    整个认证的流程是是SCP App Router和SCP UAA协同完成的,SCP UAA是SAP对Cloud Foundry上提供的安全组件UAA (User Account and Authentication Service)的一个封装,Cloud Foundry UAA是一个实现了标准Oauth 2.0协议的authorization server,SAP在此基础上做了一些自定义的增强,但是在接口上和原生的UAA保持了一致,这样可以尽可能的对OAuth Client端程序提供兼容性。

    Cloud Foundry UAA官方文档:

    https://docs.cloudfoundry.org/api/uaa/version/4.10.0/index.html#overview

    SCP标准的OAuth3.0流程:

    如何理解SCP Application Router

    如果熟悉OAuth3.0协议,从这张流程图上很快就能看出App Router和UAA之间是通过Authorization Code Grant Flow来交互的,在交互过程中它们分别充当了OAuth Client和OAuth Server的角色。

    关于OAuth3.0,请参见: https://oauth.net/2/

    看到这里您也许会问,为什么不是前端浏览器作为OAuth Client?除了安全性的考虑, App Router将OAuth流程对前端隐藏的另一个好处是,各种前端应用程序不需要知道UAA上诸如Client ID, Client Secret的细节,提供了更好的安全性。

    其次还有SAP在产品层面的考量,为了其标准的产品在UI技术上的一致性,包括SCP上的产品在内大多数都是基于SAP UI5来构建前端UI,而UI5又是基于HTML5技术而来,即这些产品都是基于浏览器的富客户端应用。如此一来,在标准的App Router里面实现OAuth3.0流程可以使SAP的各种前端应用并不需要关注认证流程的细节。如上图所示,App Router在完成了认证流程并最终拿到token之后,并没有将token返回给浏览器端,而是在App Router上生成一个session,并且将session和token关联起来,App Router在这里起到一个中介者的角色,对于前端统一用session进行交互,对于后端统一用token进行交互。

    SCP除了将标准的实现默认支持浏览器端应用程序外,作为一个开放的平台,当然也支持移动端原生应用程序的集成,这里不作赘述,具体细节可以参考SCP的开发文档。

    App Router上的session管理

    App Router上的session管理利用了node.js的session-express框架,默认将session缓存在instance memory中(下图第79行):

    如何理解SCP Application Router

    然后采用session stickiness策略来保证在多实例部署的情况下,相同会话的请求会被发送到同一个实例上以保证会话能继续进行。

    Session Stickiness:

    https://stackoverflow.com/questions/10494431/sticky-and-non-sticky-sessions

    这样做的好处是既利用了instance memory的高性能,也可以在一定程度上保证高可靠性。不过代价是牺牲了动态伸缩的能力,一旦某个App Router实例上还有正在使用中的session,这个实例就不能被关闭。

    好在App Router使用的是开源的express-session框架,该框架并非只能将session存储在instance memory中,在node.js开源社区已经提供了多种express-session的外部存储方案。至少在技术上,可以将App Router提供的instance memory存储替换为外部存储,而不需要做太多的定制化开发,这样一来多个App Router实例就可以共享同一套session存储。

    App Router的可扩展性

    只要说到SAP的产品,extensibility是一个不可避免的话题,这是由SAP的业务是面向企业级客户这一特质决定的。SAP也一直致力于从平台到框架,再到上层的产品,尽可能多的给SAP客户提供良好的可扩展性。App Router同样也不例外,因为直接使用了Node.js的connect框架,这是一款本身就提供了丰富扩展的中间件框架,可以通过可插拔的方式对Node.js的请求和响应提供过滤和拦截,具体大家可以参考connect的主页。

    App Router基于connect,当然App Router的用户就可以直接获得connect提供的各种中间件,除此之外App Router还提供了自己的一些中间件:

    如何理解SCP Application Router

    是不是非常简单和直接?使用这些中间件而不需要修改原生App Router里面的代码。

    这里不再对App Router上的各种中间件一一赘述。

    总结说来,App Router是一款设计简单,使用方便,提供了良好可扩展性的反向代理组件,为广大SAP用户在SCP上开发应用程序提供了更多的选择和方便。

    上述就是小编为大家分享的如何理解SCP Application Router了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 如何理解SCP Application Router

本文链接: https://lsjlt.com/news/239968.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解SCP Application Router
    这期内容当中小编将会给大家带来有关如何理解SCP Application Router,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。简单解释一下主要的参数:Routessource:可以是一个URL,也可...
    99+
    2023-06-04
  • 如何理解scp命令
    这篇文章主要介绍“如何理解scp命令”,在日常操作中,相信很多人在如何理解scp命令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解scp命令”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!svn 删...
    99+
    2023-06-09
  • scp命令如何使用
    这篇文章主要介绍“scp命令如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“scp命令如何使用”文章能帮助大家解决问题。scp是secure copy的简写, 是 linux 系统下基于 ss...
    99+
    2023-06-27
  • react router不显示如何解决
    本篇内容介绍了“react router不显示如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!react router不显示的解决办法...
    99+
    2023-07-04
  • 通过App.xaml理解wpf中的Application类
      这个章节来了解Application类,我考虑了一晚上决定跳过控件类相关的学习,因为控件如果只是入门的话每个控件F12跳过去看一下属性、事件就能大致了解的差不多,而且控件比较多,...
    99+
    2024-04-02
  • 如何解决centos6.0 bash scp command not found的问题
    本篇内容介绍了“如何解决centos6.0 bash scp command not found的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2023-06-09
  • 谈谈对Vue Router的理解
    目录1.1 相关理解1.1.1 vue-router 的理解1.1.2 对 SPA 应用的理解1.1.3 路由的理解1.2 基本路由1.2.1...
    99+
    2022-11-13
    Vue Router Vue Router入门 Vue Router详解
  • linux中scp命令如何使用
    本篇文章给大家分享的是有关linux中scp命令如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。svn 删除所有的 。svn文件find . -name .svn -ty...
    99+
    2023-06-13
  • Linux的scp命令如何使用
    本篇内容主要讲解“Linux的scp命令如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux的scp命令如何使用”吧!scp是secure copy的简写,用于在Linux下进行远程...
    99+
    2023-06-27
  • Linux中如何使用scp命令
    这篇文章给大家分享的是有关Linux中如何使用scp命令的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, s...
    99+
    2023-06-27
  • 如何用 Go 语言实现 SCP
    随着数据传输的不断增长,传输大量数据时如何确保数据安全和传输效率变得越来越重要。SCP (Secure Copy Protocol)是一种安全传输文件的协议,与SSH (Secure Shell)一起使用。本文将介绍如何用 Go 语言实现 ...
    99+
    2023-05-14
  • 如何实现vue-router
    这篇文章将为大家详细讲解有关如何实现vue-router,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。开始实现想象一下,如果自己实现了一个 vue-router,会怎么去...
    99+
    2024-04-02
  • vue-router如何使用
    这篇文章将为大家详细讲解有关vue-router如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、引子要学习vue-router就要先知道这里的路由是什么?为什么...
    99+
    2024-04-02
  • react router如何传参
    这篇文章主要介绍“react router如何传参”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react router如何传参”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • 如何在Android 中实现scp操作
    目录SSHSCPSFTPAndroid中使用SCPSFTP 删除文件本文简单介绍用SSH库ganymed-ssh2在Android中实现scp操作。 SSH SSH是专为远程登录会...
    99+
    2024-04-02
  • Angular中的ActivatedRoute和Router原理解释
    目录Angular中的ActivatedRoute和Router解释ActivatedRouteRouterAngular中的ActivatedRoute和Router解释 在An...
    99+
    2023-05-16
    Angular ActivatedRoute Router ActivatedRoute Router解释
  • linux中cp和scp命令如何使用
    这篇文章给大家介绍linux中cp和scp命令如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用ssh2,并且和ssh2使用相同的认证方式,提...
    99+
    2023-06-09
  • Vue如何实现router传参
    本文小编为大家详细介绍“Vue如何实现router传参”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue如何实现router传参”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。vue-router 参数传递的方...
    99+
    2023-07-04
  • 如何解决Unable to find a version of the runtime to run this application
    这篇文章主要讲解了“如何解决Unable to find a version of the runtime to run this application”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研...
    99+
    2023-06-13
  • HTML5应用程序如何缓存Application Cache
    HTML5应用程序如何缓存Application Cache,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是Applica...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作