token

如何为K8S生产系统配置安全管理?

旧城冷巷雨未停 提交于 2020-02-04 20:26:11
PX-Security:针对Kubernetes持久卷的多租户授权、身份验证和RBAC PX-Security演示视频链接 https://v.qq.com/x/page/s30609pfmuq.html 安全对于企业来说至关重要 ,对于运行在Kubernetes上的基于微服务的应用来说更是如此。 Kubernetes提供RBAC授权,根据不同角色设定,管理Kubernetes内部特定资源的访问权限。这些机制对于管理Kubernetes的特定对象(如服务、命名空间、配额等)的访问权限非常有用。但命名空间和pod的安全策略本身,不足以限制谁有权限可以请求更改底层数据管理系统。 许多企业通过CNI或CSI等API,调用其他的平台能力来提供网络和存储基础。Kubernetes所缺乏的是将RBAC扩展到这些系统的能力,需要外部系统来确保授权和认证功能的实现。 这就是为什么Portworx与Kubernetes携手,通过对支撑Kubernetes中PVCs的持久卷,进行访问角色控制,来提供RBAC、加密和控制权限 ,这将创建一个无缝的保护层,为您的PVCs提供以下保护: 同一命名空间中的用户可以受到其角色的限制,比如他们可以具有读、写、管理员或其他定义的访问权限。 用户可以通过Token自动进行身份验证,这样审计请求的授权就可以针对特定命名空间来进行。 可以将用户置于基于租户的命名空间中

微服务集成Spring Security + Oauth2 + JWT+Swagger2 + Druid

女生的网名这么多〃 提交于 2020-02-04 12:10:29
参考《深入理解Spring Cloud与微服务构建》 感谢作者 方志朋 参考 https://blog.csdn.net/yuanlaijike/category_9283872.html 参考 https://www.jianshu.com/p/19059060036b 文章目录 背景介绍 实现目标 实现过程 集成网关zuul 集成oauth2 集成swagger2 集成Druid 验证功能 背景介绍 本文是下文的进阶篇,进一步以微服务为基础进行集成Spring Security + Oauth2 + JWT+Swagger2 + Druid 微服务自动化部署SpringCloud+Dockerfile+docker-compose+git+Maven 实现目标 把网关服务和验证服务集成到一个微服务中,验证服务以oauth2+jwt进行实现,同时使用swagger2简单明了的展示验证登入的相关接口,druid方便管理数据库连接池以及性能排查 模块authservice 集成网关zuul 取消原ui模块网关 集成Spring Security Oauth2验证+鉴权 Oauth server 获取令牌token Oauth client 用户注册API GibHub项目代码 分支master 实现过程 集成网关zuul //注意 Spring Boot 1

Token 认证的来龙去脉

橙三吉。 提交于 2020-02-04 12:05:34
不久前,我在在 前后端分离实践 中提到了基于 Token 的认证,现在我们稍稍深入一些。 通常情况下,我们在讨论某个技术的时候,都是从问题开始。那么第一个问题: 为什么要用 Token? 而要回答这个问题很简单——因为它能解决问题! 可以解决哪些问题呢? Token 完全由应用管理,所以它可以避开同源策略 Token 可以避免 CSRF *** Token 可以是无状态的,可以在多个服务间共享 Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。 于是,又一个问题产生了:需要为 Token 设置有效期吗? 需要设置有效期吗? 对于这个问题,我们不妨先看两个例子。一个例子是登录密码,一般要求定期改变密码,以防止泄漏,所以密码是有有效期的;另一个例子是安全证书。SSL 安全证书都有有效期,目的是为了解决吊销的问题,对于这个问题的详细情况, 来看看知乎的回答 。所以无论是从安全的角度考虑,还是从吊销的角度考虑,Token 都需要设有效期。 那么有效期多长合适呢? 只能说,根据系统的安全需要,尽可能的短,但也不能短得离谱——想像一下手机的自动熄屏时间,如果设置为 10

Java执行curl

南笙酒味 提交于 2020-02-04 10:21:50
Java执行curl public static void main ( String [ ] args ) { String [ ] cmds = { "curl" , "-v" , "https://api.sandbox.paypal.com/v1/oauth2/token" , "-H" , "Accept:application/json" , "-H" , "Accept-Language:en_US" , "-u" , "AZcQqgjuWGDk55NQ0h1C878c21SxLhUUIBQVV2ZRd5bf9PCgBI2rrCMHeFdStI9IDIEkYoUDpCpFHV79:ECLmfhZgXlDwmwjqMOJz4oDLdg_BIcCZKrpdwCXQKZaEgf0-0MYP7iTFpOJBobMFQLa2L1UWRM1cV2kQ" , "-d" , "grant_type=client_credentials" } ; ProcessBuilder pb = new ProcessBuilder ( cmds ) ; pb . redirectErrorStream ( true ) ; Process p ; String s = "" ; try { p = pb . start ( ) ; BufferedReader br = null ;

JSON Web Token

我与影子孤独终老i 提交于 2020-02-04 03:57:52
JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。虫虫今天给大家介绍JWT的原理和用法。 1.跨域身份验证 Internet服务无法与用户身份验证分开。一般过程如下。 1.用户向服务器发送用户名和密码。 2.验证服务器后,相关数据(如用户角色,登录时间等)将保存在当前会话中。 3.服务器向用户返回session_id,session信息都会写入到用户的Cookie。 4.用户的每个后续请求都将通过在Cookie中取出session_id传给服务器。 5.服务器收到session_id并对比之前保存的数据,确认用户的身份。 这种模式最大的问题是,没有分布式架构,无法支持横向扩展。如果使用一个服务器,该模式完全没有问题。但是,如果它是服务器群集或面向服务的跨域体系结构的话,则需要一个统一的session数据库库来保存会话数据实现共享,这样负载均衡下的每个服务器才可以正确的验证用户身份。 例如虫虫举一个实际中常见的单点登陆的需求:站点A和站点B提供同一公司的相关服务。现在要求用户只需要登录其中一个网站,然后它就会自动登录到另一个网站。怎么做? 一种解决方案是听过持久化session数据,写入数据库或文件持久层等。收到请求后,验证服务从持久层请求数据。该解决方案的优点在于架构清晰,而缺点是架构修改比较费劲,整个服务的验证逻辑层都需要重写,工作量相对较大

Why does the order of ANTLR4 tokens matter?

无人久伴 提交于 2020-02-04 03:35:46
问题 I have a simple grammar that will eventually parse YANG source. When I make when seem to be an arbitrary change the location of the MODULE token the IntelliJ ANTLR4 Plugin can/cannot parse my input. The input string to be parsed: module x { } Here is the grammar that works without any error: grammar Yang ; yang: module_open module_close; module_open : MODULE ID BRACKET_OPEN ; module_close: BRACKET_CLOSE ; MODULE: 'module' ; ID: ([A-Za-z][A-Za-z0-9_-]*) ; BRACKET_OPEN: '{' ; BRACKET_CLOSE: '}'

关于axios的一些封装

牧云@^-^@ 提交于 2020-02-04 00:22:14
关于Axios的封装 为何需要在封装 应用场景,项目中涉及100个 AJAX 请求 ,其中: 1.其中60个需要在 请求头header 设置 token headers: {token: token} 用于权限校验; 2.其中20个为 上传EXCEL文件 需要在请求头中设置 Content-Type ; headers: { 'Content-Type': `multipart/form-data; boundary=${data._boundary}`} 上面说的 1、2、3可以在 全局 request 拦截中 进行处理,但是 代价极大 ,需要为这100个接口都 做判断再做相应处理 ... ;当然也可以不用全局拦截,为每个接口都单独定义,我相信有不少同学仍是这样处理的, 但是 只要有改动,例如现在我要求所有的请求头都新增一个参数,那就只能一个一个接口的改.....这不是我们想要的结果,所以 我们需要对 AJAX再封装!AJAX再封装!AJAX再封装! ,因为相当重要,所以要多说几遍.... ③最后20个请求用来 获取文件流 ,需要指定接受类型 responseType: 'blob' 需要对 全局发起request 进行 拦截 并做 异步处理 ( 强调 :是 异步处理 ); 如果你的项目已经做到一半,现在后端要 加上token权限 做认证; 封装实现 封装其实很简单

Postman每次请求携带token

…衆ロ難τιáo~ 提交于 2020-02-03 17:53:45
单点登录,登录成功之后获取token,每次登录 token都会改变 且token具有过期时间 测试中,每次post请求都要携带一个token,token是通过get请求得来的,动态变化的,并且token有有效期的限制。为了避免重复获取token来手工修改给post请求赋值: 1.把token做成环境变量,这样多个post请求可以复用 在post请求中使用环境变量,携带token信息 2.发送get请求获取当前可用token之后,在 单点登录颁发token接口 的Tests中给环境变量赋值 var acquiretoken = JSON . parse ( responseBody ) ; //定义一个acquiretoken方法(获取token),把responseBody转为json字符串 pm . environment . set ( "token" , acquiretoken . data ) ; 来源: CSDN 作者: okyesok1515 链接: https://blog.csdn.net/qq_41775096/article/details/104156836

Cassandra CQL token function for pagination

情到浓时终转凉″ 提交于 2020-02-02 11:35:00
问题 I am new to CQL and trying to add pagination support for my tables defined in cassandra as shown below - cqlsh:dev> create table emp4 (empid uuid , year varchar , month varchar , day varchar, primary key((year, month, day), empid)); cqlsh:dev> insert into emp4 (empid, year, month, day) values (08f823ac-4dd2-11e5-8ad6-0c4de9ac7563,'2014','03','19'); cqlsh:dev> insert into emp4 (empid, year, month, day) values (08f823ac-4dd2-11e5-8ad6-0c4de9ac7562,'2016','03','19'); cqlsh:dev> select * from

Cassandra CQL token function for pagination

倖福魔咒の 提交于 2020-02-02 11:34:20
问题 I am new to CQL and trying to add pagination support for my tables defined in cassandra as shown below - cqlsh:dev> create table emp4 (empid uuid , year varchar , month varchar , day varchar, primary key((year, month, day), empid)); cqlsh:dev> insert into emp4 (empid, year, month, day) values (08f823ac-4dd2-11e5-8ad6-0c4de9ac7563,'2014','03','19'); cqlsh:dev> insert into emp4 (empid, year, month, day) values (08f823ac-4dd2-11e5-8ad6-0c4de9ac7562,'2016','03','19'); cqlsh:dev> select * from