云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

MySQL数据库_重生之宠你如命百度云_新注册优惠

小七 141 0

MySQL数据库_重生之宠你如命百度云_新注册优惠

概述

让我们直奔主题。假设我们有以下MTA结构:

MTA

–app(html5模块–执行对odata srv的调用)

–db(hdi容器–odata与srv模块交互)

–srv(java模块–odata提供程序)

如果尚未通过身份验证,我们希望html5模块为我们提供登录屏幕。如果经过验证,则加载html5代码并在浏览器中运行。一旦应用程序完成了它的执行,云服务器免费,我可能会从OData服务加载数据(可能是在单击按钮或控制器的init方法之后——这并不重要)。为了从后端系统(在我们的例子中是hdi容器)加载数据,应用程序将调用一个服务(在我们的例子中是srv模块提供的OData服务)。然而,由于我们处理的是微服务,它们需要受到保护——因此我们需要使srv模块接受html5模块生成的相同身份验证。

如果通过任何方式,公众知道srv模块的URL,我们希望通过使其仅在授权对象被激活时才工作来拒绝与它的直接连接应要求出席。换句话说,我们希望使其具有SSO意识,并避免使用其他身份验证方法。

深入解释(逐步)

以下是在SAP Cloud Foundry中如何在此MTA上进行身份验证:

1)用户请求html5应用程序的url。

应用程序的身份验证方法由xs中的以下代码控制-应用程序.json(本默认情况下,文件也存在于模块的根目录下):

说明:当您将AuthenticationMethod设置为"route"时,您告诉Cloud Foundry使用您在xs上指定的每个路由上定义的身份验证类型-应用程序.json. 但是,如果将其设置为"无"(这是唯一的其他选项),则会完全禁用应用程序模块的身份验证。但是我们希望它请求身份验证,所以我们将它设置为"路由"。

1.1)xs-应用程序.json包含应用程序的默认路由定义,如以下代码段:

说明:尽管此处未定义AuthenticationType,但路由的默认值为"xsuaa"。因此,自助免费建站,任何与regex"^/app/(.*)$"匹配的传入请求都将在内部转发到webapp文件夹。

事实上,这很有意义,因为我们讨论的是一个html5应用程序,我们只希望节点应用程序将所有资源"服务"到浏览器—不需要服务器处理。

1.2)在微服务可以用所谓的JWT(JSON Web Token)来表示,通常用于在内部实现微服务之间的SSO。

JWT简单地说就是一个JSON字符串,包含主体信息以及有关您帐户的其他敏感信息。此信息是在云平台身份验证期间生成的(此处html5模块将负责为我们携带此JWT)。

1.3)如果初始请求中没有JWT令牌,大数据分析培训课程,则请求将被委托给身份提供商的身份验证机制。由于云平台中没有用户存储库存储,因此由第三方软件管理(如果是试用帐户,则由SAP ID服务处理)。

1.4)一旦用户通过身份验证,IdP将重定向请求返回应用程序URL(这是我们的html5应用程序)–包含JWT。由于应用程序现在可以在请求中找到JWT令牌,浏览器将能够加载应用程序的资源以执行引导过程并开始加载其组件。

既然我们的应用程序已通过身份验证并拥有有效的JWT令牌,我们需要发出从后端检索数据的请求。

2)您的应用程序使用其控制器的某些方法构建odata请求以自己的URL为基础。它应该类似于:

解释:"/odata/v2"后缀与实际的odata服务URL无关。实际上,它将尝试加载OData服务,就像它是html5模块的服务器一样。除此之外,这将碰到路由定义,我们将在下面看到。

3)文件"xs-应用程序.json"我们的应用程序模块还将定义一个额外的路由来处理OData服务请求,例如:

说明:声明的路由将使用xsuaa身份验证(这里我们只是强制它为xsuaa—为了可读性)。这意味着请求必须包含要接受的JWT令牌,该令牌将用于针对声明的目的地进行身份验证。请记住,这将是在CloudFoundry环境中发生的"内部"通信。因此,bi大数据分析,CSRF对这个路由没有任何意义,因为这里没有涉及浏览器。

4)使用的目的地在你的应用程序模块的"requires"子句中声明:

说明:这里的目的地声明指示html5模块使用其URL连接到srv\ U api模块(此时是一个环境)变量名为'url',在srv\u api模块中定义)。它还定义了JWT令牌应该转发到srv\u api模块,并且不使用SSL协议。

5)然后系统将通过查找srv\u api模块中定义的环境变量来解析目标的URL。在我的例子中,srv\u api模块不是这样命名的。它在名为"srv"的Java模块中被定义为"provides->name"参数(只是为了使用环境变量URL,该变量被定义为"provides->name->properties->URL")。这样做:

解释:通过使用同一个xsuaa实例,我们可以确保JWT在必须相互信任的应用程序之间是相同的。MTA还声明了一个ACL(访问控制列表)。这里它意味着它将接受在任何子帐户上运行的任何应用程序获得的所有JWT。缺少此声明意味着您的应用程序不信任提供的任何JWT。

客户端ID是被授予JWT令牌的应用程序的OAuth 2.0 ID,而标识区域将是子帐户ID。