您当前的位置:首页 > 电脑百科 > 安全防护 > 软件工具

使用Oauth2实现微服务的安全保护

时间:2019-08-28 10:57:06  来源:  作者:

序言

安全性是暴露由许多微服务组成的公共访问API时要考虑的最重要的一个方面。Spring有一些有趣的功能和框架,使我们的微服务安全配置更容易。在本文中,我将向您展示如何使用Spring Cloud和Oauth2在API网关后面提供令牌访问安全性。

理论知识

OAuth2标准目前被所有主要网站使用并且允许通过共享API访问其资源。它是一种开放式授权标准,允许用户将存储在一个页面中的私有资源共享到另一个页面,而无需进入其凭据服务。这些是与oauth2相关的基本术语。

  • Resource Owner – 处理对资源的访问
  • Resource Server – 存储可以使用特殊令牌共享的所有者资源的服务器
  • Authorization Server – 管理密钥,令牌和其他临时资源访问代码的分配。它还必须确保授予相关人员访问权限
  • Access Token – 允许访问资源的密钥
  • Authorization Grant – 授予访问权限。有多种方法可以确认访问权限:授权代码,隐式,资源所有者密码凭据和客户端凭据

您可以在此处以及在digitalocean文章中阅读有关此标准的更多信息。该协议的流程主要有三个步骤。首先,我们将授权请求发送给资源所有者。在资源所有者响应后,我们向授权服务器发送授权请求并接收访问令牌。最后,我们将此访问令牌发送到资源服务器,如果它有效,则API将资源提供给应用程序。

方案

下图显示了我们案例的架构。我们用API网关(Zuul)代理我们对授权服务器的请求和两个帐户微服务实例。授权服务器是某种提供outh2安全机制的基础结构服务。我们还有发现服务(Eureka),我们所有的微服务都已注册。

使用Oauth2实现微服务的安全保护

 

网关

对于我们的示例,我们不会在API网关上提供任何安全性。它只需要将客户端的请求代理到授权服务器和帐户微服务。在下面可见的Zuul的网关配置中,我们将sensitiveHeaders属性设为空值以启用授权HTTP头转发。默认情况下,Zuul在将我们的请求转发到目标API时切断了该头,这是不正确的,因为网关后面的服务需要基本授权。

使用Oauth2实现微服务的安全保护

 

网关源代码中的主类非常简单。它只需要启用Zuul代理功能和发现客户端来收集Eureka注册表中的服务。

使用Oauth2实现微服务的安全保护

 

授权服务器

gaOur授权服务器内的主类也很简单。它基于默认的Spring安全配置。客户端授权详细信息存储在内存存储库中。当然在生产模式中,您也可以使用其他实现而不是内存存储库,如JDBC数据源和令牌存储。您可以在Spring Security Reference和Spring Boot Security中阅读有关Spring授权机制的更多信息。这是Application.yml的配置片段。我们为/ token端点提供了用户基本身份验证数据和基本安全凭证:client-id和client-secret。用户凭据是普通的Spring Security用户详细信息。

使用Oauth2实现微服务的安全保护

 

这是用@EnableAuthorizationServer实现身份验证服务器的主要类。我们公开一个REST端点验证帐户服务的用户身份详情,并为客户端启用了Eureka注册和发现。

使用Oauth2实现微服务的安全保护

 

Application-账户微服务

我们的示例微服务只有一个@GET请求的端点,它始终返回相同的帐户。在主类中,资源服务和Eureka发现都已启用。服务配置很简单。 GitHub上提供了示例应用程序源代码。

使用Oauth2实现微服务的安全保护

 

测试

我们只需要Web浏览器和REST客户端(例如Chrome Advanced REST客户端)来测试我们的解决方案。从向资源所有者发送授权请求开始测试。我们可以通过Web浏览器中的Zuul网关调用oauth2授权端点。

http://localhost:8765/uaa/oauth/authorize?response_type=token&client_id=acme&redirect_uri=http://example.com&scope=openid&state=48532

发送请求后,我们应该看到下面的页面。选择“Approve”,然后单击“Authorize”,从授权服务器请求访问令牌。如果应用程序标识已通过身份验证且授权授予有效,则应在HTTP响应中返回应用程序的访问标记。

使用Oauth2实现微服务的安全保护

 

http://example.com/#access_token=b1acaa35-1ebd-4995-987d-56ee1c0619e5&token_type=bearer&state=48532&expires_in=43199

最后一步是使用访问令牌调用帐户端点。我们不得不将其作为承载令牌放入Authorization标头中。在示例应用程序中,安全操作的日志记录级别设置为TRACE,因此您可以轻松找出问题发生时的情况。

使用Oauth2实现微服务的安全保护

 

结束语

说实话,我不太熟悉应用程序中的安全问题。所以对我来说一个非常重要的是使用的安全解决方案的简单性。在Spring Security中,我们几乎所有需要的机制都是开箱即用的。它还提供可轻松扩展的组件,以满足更高级的要求。您应该将本文视为使用Spring Cloud和Spring Security项目的更高级解决方案的简要介绍。

原文链接:https://piotrminkowski.wordPress/ target=_blank class=infotextkey>WordPress.com/2017/02/22/microservices-security-with-oauth2/

作者:Piotr Mińkowski

译者:Emma



Tags:Oauth2   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
最开始接触 OAuth2.0 的时候,经常将它和 SSO单点登录搞混。后来因为工作需要,在项目中实现了一套SSO,通过对SSO的逐渐了解,也把它和OAuth2.0区分开了。所以当时自己也整理了一篇...【详细内容】
2021-09-16  Tags: Oauth2  点击:(68)  评论:(0)  加入收藏
前言微服务架构下统⼀认证思路主要有两种形式:1、基于 Session 的认证⽅式在分布式的环境下,基于 session 的认证会出现⼀个问题,每个应⽤服务都需要在session中存储⽤户身份信...【详细内容】
2021-04-07  Tags: Oauth2  点击:(252)  评论:(0)  加入收藏
介绍OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。OAuth...【详细内容】
2020-08-18  Tags: Oauth2  点击:(65)  评论:(0)  加入收藏
从事互联网开发的同学们应该或多或少听说过 OAuth2.0 协议,例如使用微信或支付宝账户登录第三方App,这是 OAuth2.0 最为开发人员所熟知的一个用途,但是围绕着 OAuth2.0 协议其...【详细内容】
2020-07-12  Tags: Oauth2  点击:(102)  评论:(0)  加入收藏
序言安全性是暴露由许多微服务组成的公共访问API时要考虑的最重要的一个方面。Spring有一些有趣的功能和框架,使我们的微服务安全配置更容易。在本文中,我将向您展示如何使用S...【详细内容】
2019-08-28  Tags: Oauth2  点击:(351)  评论:(0)  加入收藏
一、什么是OAuth协议OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth的授权不会使第三方触及到用户的帐号信息(如用户...【详细内容】
2019-08-01  Tags: Oauth2  点击:(272)  评论:(0)  加入收藏
▌简易百科推荐
已经观察到一种新的基于JavaScript的远程访问木马(RAT)利用社会工程学传播,采用隐蔽的"无文件"技术作为其逃避检测和分析的方法。该恶意软件由Prevalyion的对抗性反情报团队(PA...【详细内容】
2021-12-17  网安老葫    Tags:恶意软件   点击:(13)  评论:(0)  加入收藏
关于windows Defender防病毒的问题升级win10后,我们会经常遇到打开或下载文件时弹出提示框提示你下载的文件是病毒之类,直接给你删除。你好不容易找了个激活工具,你刚打开发现...【详细内容】
2021-11-08  IT小哥吧    Tags:defender   点击:(47)  评论:(0)  加入收藏
喽!大家好,我是小易,欢迎来到我的知识分享站!今天给大家分享5个杀毒神器,让你的电脑干干净净,建议收藏起来哟! 1、Windows Defender随着Win10系统的更新已经日趋完善,它可以很好的解...【详细内容】
2021-11-08  知识与技能    Tags:流氓软件   点击:(74)  评论:(0)  加入收藏
介绍其实Iptables服务不是真正的防火墙,只是用来定义防火墙规则功能的"防火墙管理工具",将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能。fil...【详细内容】
2021-10-18  互联网IT技术全栈    Tags:   点击:(52)  评论:(0)  加入收藏
什么是Nessus?Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件步骤如下:查看当前kali系统内核版本...【详细内容】
2021-09-09  TestGO    Tags:Nessus   点击:(112)  评论:(0)  加入收藏
http 头部信息http头部信息经常包含着主机服务的一些版本信息,经常使用的字段信息有:Server, X-Powered-By, X-AspNet-Version工具可采用curl进行curl --location --head $URL...【详细内容】
2021-08-19  80后IT老民工    Tags:渗透   点击:(227)  评论:(0)  加入收藏
一、杀软常见的三种方式二、免杀的三种常用方式三、利用工具实现免杀1、veil工具基础实现免杀+进阶2、venom免杀3、利用kali自带的shellter进行免杀4、利用avet实现免杀四、...【详细内容】
2021-08-18  白帽hacker淬炼    Tags:免杀   点击:(82)  评论:(0)  加入收藏
关于工具现有工具现在,现成的污点分析工具已经有很多了。其中,我最感兴趣的是Triton和bincat,因为两者已经相当成熟。然而,我们却无法使用这两种工具,因为它们不支持目标设备所...【详细内容】
2021-08-12  Hbo涵    Tags:安全漏洞   点击:(94)  评论:(0)  加入收藏
从实现原理上分,防火墙的技术包括四大类:网络级防火墙、应用级网关、电路级网关和规则检查防火墙。1、网络级防火墙一般是基于源地址和目的地址、应用、协议以及每个IP包的端...【详细内容】
2021-07-20  趣谈文化  搜狐号  Tags:防火墙   点击:(225)  评论:(0)  加入收藏
一、VMware部分1、Vmware简介虚拟机就是一个用来模拟真实的物理机环境的一个软件,可以在虚拟机中安装不同版本的操作系统。就是一个把下载好的ISO安装在物理机操作系统的一个...【详细内容】
2021-07-12  Kali与编程  公众号  Tags:Kali Linux   点击:(113)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条