千家信息网

如何理解SCP Application Router

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这期内容当中小编将会给大家带来有关如何理解SCP Application Router,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。简单解释一下主要的参数:Rout
千家信息网最后更新 2025年02月04日如何理解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流程:

    如果熟悉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行):

    然后采用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还提供了自己的一些中间件:

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

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

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

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

应用 程序 前端 应用程序 用户 安全 流程 认证 产品 框架 支持 中间件 实例 标准 存储 浏览器 目标 路由 浏览 管理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 人保财险数据库项目招标 上海服务器机房精密空调系统 my sql创建数据库只读账户 购买数据库算技术服务么 大华综合管理服务器 c 多线程连接数据库连接 阴阳师 鸿蒙服务器和安卓服务器 上海在线学习系统软件开发 网络安全手抄报上面的孔填什么 手机上的数据库怎么查 服务器缓存实现 扣扣邮箱的收件服务器是什么 与计算机网络技术有关的课程 我的世界服务器杀死一切生物 路透社数据库使用 长春的软件开发 腾讯轻量级应用服务器部署 国土局网络安全 信息软件开发的方法 自贡市网络安全宣传周攻防演练 我的世界服务器身份认证在哪里 网络安全宣传单内容 网络安全中心举报中心 街道网络安全处置记录 腾讯轻量级应用服务器部署 f5负载均衡需单独服务器 5大互联网科技股票 软件开发一般有哪几个阶段 我的世界正式服服务器怎么加模组 盈利大的软件开发方向
0