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

金山云_阿里云加班_多少钱

小七 141 0

2017年7月22日更新

在SAP NetWeaver 7.5的SP07中,增强了REST适配器,并作为适配器标准功能的一部分,发布了对通用OAuth 2.0流的客户端凭据和资源所有者密码凭据授予的支持。有关此功能用法的详细信息,请参阅SAP Note 2405166。在进一步的支持包中,我们可能会期待REST适配器的进一步增强和特性扩展,包括对oauth2.0协议的更全面的支持,所以请继续关注并遵循产品发行说明。尽管需要注意的是,REST适配器的一些新特性(如OAuth 2.0支持中提到的扩展)仅在7.5版本中可用,尚未下载到较低版本(如7.4)。

简介

基于OAuth的授权是当前非常热门的话题,特别是考虑到与云集成的需求增加基于OAuth的系统和服务,其中OAuth协议通常被用作客户机授权的事实标准之一。再加上目前一些标准的基于HTTP的适配器(如REST适配器)对该协议的现成支持有限,而SAP PI/PO附带的其他适配器(如HTTP和OData适配器)缺乏这种支持,这促使开发人员在大量参与第三方或定制开发组件的基础上实施集成场景。

在SAP社区中,已经有一些有用的资料描述了在处理接收方流中OAuth授权需求时的解决方案。最近的一个好例子是David Halsband写的blog,他提供了获取访问令牌和设置相应的动态配置属性的解决方案的详细说明和示例,该动态配置属性在REST接收器通信信道中进一步用作额外的所需HTTP授权头,在Stefan Zimara撰写的博客中,他解释了如何使用Java映射程序支持OAuth授权流,并通过其方式设置相应的动态配置属性。

作为上述博客中描述的方法的替代方法,本博客的重点是实现类似的目标,但是使用自定义开发的适配器模块设置动态配置属性。在适配器模块中实现该逻辑并从通信信道调用该逻辑的原因,以及旨在以动态方式设置动态配置属性的通用适配器模块的技术方法和实现细节(因此,在运行时获取而不是在配置时指定),在我之前的博客中有描述,可以在这里阅读。该博客中描述的自定义适配器模块AddDynamicConfigurationBean在这里用作进一步开发和提供基于oauth2.0的授权支持的基础。因此,我不会在本博客中重复从适配器模块设置动态配置属性的逻辑和实现,而是假设它已经得到了处理和管理。如果您使用不同的实现逻辑来设置自定义适配器模块的动态配置属性,则可以相应地修改提供的独立示例。

进一步阅读的前提是理解OAuth 2.0的一般概念和用例–即,身份验证协议(如OpenID Connect)和授权协议(如OAuth)之间的区别,OAuth流和相关方(客户机、授权服务器、资源服务器),可能的授权类型,令牌(访问和刷新)的概念及其在准备对OAuth保护的资源的请求时在客户端的用法。

为了演示,我提供了使用密码授予类型从Microsoft Azure Active Directory授权服务器获取访问令牌的示例实现,当向基于Microsoft Azure的服务发送请求时,将进一步使用获得的访问令牌。根据需要,同样的方法可以重复使用和扩展,以支持其他补助金类型。请注意,为了简单起见,提供的演示没有实现令牌缓存(对于相同的令牌可重用性,这可能有助于大容量场景通过减少对授权服务器的调用次数来提高性能)和令牌刷新(出于安全目的,可以考虑在每个对授权服务器的访问令牌请求中避免发送诸如密码之类的客户端机密,但这两个特性都需要实现将获得的JSON Web令牌保存到安全持久层,并根据令牌的过期时间实现其失效机制。相反,在演示中,适配器模块的每一次新调用都会导致从头开始生成新的访问令牌请求,并将其发送到授权服务器。

尽管手动构造访问令牌的HTTP请求(发送到授权服务器)然后处理HTTP响应(来自授权服务器)是很好的,但是包含访问令牌或错误如果不能提供令牌,淘客返利系统,我将使用专门的通用OAuth客户机库,它提供额外的抽象级别,并消除管理较低级别(如HTTP请求/响应处理)的必要性。结果,大数据与人工智能,定制代码变得更加紧凑(我们将进一步了解到,实现所需的核心逻辑只需要很少的代码行),并且更易于维护。在演示中,我使用apacheoltu(OAuth协议的客户端和服务器端实现之一)作为OAuth客户机库,但是您可能会找到其他库,并用更适合您的类似库替换Oltu。此外,一些授权服务器提供程序发布特定于供应商的库,这些库是专门为与某些授权提供程序一起使用而设计和开发的(例如,Microsoft提供Microsoft Azure Active Directory验证库)。我选择Oltu的主要原因是它占地面积小,不依赖于提供商的功能(该库可以以通用方式与不同的授权服务器一起使用),多个授权服务器的请求模板(Google、LinkedIn、GitHub、,等等)以及构建针对通用授权服务器的细粒度定制访问令牌请求的可能性(如果提供的模板不相关或不可接受)。注意,Oltu客户机库利用JSON库解析OAuth令牌(jsonweb令牌)的JSON表示,并将其解组为Java对象。因此,在遵循此实现方法时,请确保Oltu客户端库和JSON库都已下载并插入到项目中–或者,如果您使用依赖关系管理工具(如Maven或Gradle提供的工具),云免费,请检查是否启用了自动可传递依赖关系管理,除非您将JSON库添加为依赖关系手工操作。

准备