oauth

grafana使用gitLab 的OAuth2认证服务登陆

自作多情 提交于 2020-03-20 13:01:20
3 月,跳不动了?>>> grafana 使用gitLab 的OAuth2认证服务登陆 grafana 配置 [auth.gitlab] enabled = true allow_sign_up = true client_id =f8d7d37a0d5bbe13e6832d878bedddeafde511ed1465bb042d2467978e797e01 client_secret =1e72599e0a006a69060758d38e8bf3a91b6e760bb64b62c7de4403aa67f092e1 scopes = api uth_url = http://192.168.222.205/oauth/authorize token_url = http://192.168.222.205/oauth/token api_url = http://192.168.222.205/api/v4 allowed_groups = [server] protocol = http http_port = 3000 root_url = http://192.168.222.205:3000/ 重启grafana 看到gitlab登陆了 systemctl restart grafana-server 注意三个参数 auth.gitlab中的 allow_sign_up =

【Spring Security + OAuth2 + JWT入门到实战】23. 改造基于APP接口社交注册

有些话、适合烂在心里 提交于 2020-03-20 12:24:16
3 月,跳不动了?>>> 简介 上章完成社交登录但是我们是在数据库有用户的情况下登录了,这章解决数据库无该用户数据先完成注册再登录。 流程 看之前浏览器代码如果用户未注册我们会把用户引导到注册页面 注册完成以后访问 /social/user 连接通过 ProviderSignInUtils帮助包到session取用户资料 登录通过以会拿到用户的唯一标识再调用doPostSignUp方法从session拿出用户资料进行绑定再添加到数据库 到这里我们也看到问题那就是整个流程都是基于session完成的,但是我们APP是无session的 改造 改造思路如果第三方信息在数据库查不到数据先保存到Redis等用户注册完我们平台账号拿到userId以后再绑定保存到数据库 创建帮助类AppSingUpUtils: /** * */ package com.spring.security.social; import java.util.concurrent.TimeUnit; import com.spring.security.AppSecretException; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import

【Spring Security + OAuth2 + JWT入门到实战】21. 改造短信登录

女生的网名这么多〃 提交于 2020-03-19 13:34:03
3 月,跳不动了?>>> 之前代码都是基于浏览器做的,验证码保存在session中,现在基于APP是没有session我们只需要把保存到session的换成保存到redis 定义一个 ValidateCodeRepository ,用于验证码的增删改: core项目com.spring.security.validate.code路径 package com.spring.security.validate.code; import org.springframework.web.context.request.ServletWebRequest; /** * 验证码添加 查询 删除 */ public interface ValidateCodeRepository { /** * 保存验证码 * * @param request * @param code * @param validateCodeType */ void save(ServletWebRequest request, ValidateCode code, ValidateCodeType validateCodeType); /** * 获取验证码 * * @param request * @param validateCodeType * @return */ ValidateCode get

【Spring Security + OAuth2 + JWT入门到实战】20. 改造密码登录返回标准oauth2报文

﹥>﹥吖頭↗ 提交于 2020-03-18 22:46:13
3 月,跳不动了?>>> 简介 改造之前密码登录返回标准的OAuth2登录成功报文 流程 参考这个流程,来实现在登录成功处理器 HkAuthenticationSuccessHandler 里生成令牌并返回: 这个是从之前browser项目拷贝过来的成功处理器,我们在这个基础安装上面的流程图去改 package com.spring.security.authentication; import com.fasterxml.jackson.databind.ObjectMapper; import com.spring.security.properties.LoginType; import com.spring.security.properties.SecurityProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.web.DefaultRedirectStrategy; import org.springframework.security.web.RedirectStrategy;

认证授权问题概览

眉间皱痕 提交于 2020-03-18 09:56:59
某厂面试归来,发现自己落伍了!>>> 相信很多人对认证授权方面都不是特别了解,搞不清Session认证、JWT以及 Cookie 这些概念。所以,我根据日常对这部分学习已经在项目中的实际运用总结了这8 个相关的问题并且附上了详细的回答 所有问题如下,开始看答案之前不妨自己测验一下自己究竟能回答几个: 认证 (Authentication) 和授权 (Authorization)的区别是什么? 什么是Cookie ? Cookie的作用是什么?如何在服务端使用 Cookie ? Cookie 和 Session 有什么区别?如何使用Session进行身份验证? 如果没有Cookie的话Session还能用吗? 为什么Cookie 无法防止CSRF攻击,而token可以? 什么是 Token?什么是 JWT?如何基于Token进行身份验证? 什么是OAuth 2.0? 什么是 SSO? 1. 认证 (Authentication) 和授权 (Authorization)的区别是什么? 首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我建议你先先去查一查这两个单词到底该怎么读,他们的具体含义是什么。 说简单点就是: 认证 (Authentication): 你是谁。 授权 (Authorization): 你有权限干什么。 稍微正式点(啰嗦点)的说法就是:

Laravel Eloquent model id as string return wrong value in

折月煮酒 提交于 2020-03-18 04:52:08
问题 There is OauthClient model which $client->id does not return correct value in Laravel 5.2. "lucadegasperi/oauth2-server-laravel": "^5.1" is used that has in migration $table->string('id', 40)->primary(); However when use $client->id in blade template then I get back "0" . Using dd($client) show correct value in id attribute. What could be wrong? Model output from dd() OauthClient {#254 ▼ #connection: null #table: null #primaryKey: "id" #keyType: "int" #perPage: 15 +incrementing: true

Spring Security + OAuth2 + JWT入门到实战】19. oauth2资源服务器

匆匆过客 提交于 2020-03-17 21:04:22
某厂面试归来,发现自己落伍了!>>> 简介 为什么需要资源服务器呢?我们先来看下在没有定义资源服务器的时候,使用Token去获取资源时会发生什么。 定义一个REST接口: /** * 获取用户资料 * * @param user * @return */ @GetMapping("/user/me") private Object getCurrentUser(@AuthenticationPrincipal UserDetails user) { return user; } 启动项目,为了方便我们使用密码模式获取令牌,然后使用该令牌获取 /user/me 这个资源 Authorization值为 token_type access_token ,发送请求后,返回: { "timestamp": "2020-03-17T12:44:21.732+0000", "status": 401, "error": "Unauthorized", "message": "Unauthorized", "path": "/user/me" } 虽然令牌是正确的,但是并无法访问 /user/me ,所以我们必须配置资源服务器,让客户端可以通过合法的令牌来获取资源。 资源服务器的配置也很简单,只需要在配置类上使用 @EnableResourceServer 注解标注即可: 创建资源服务器类

【Spring Security + OAuth2 + JWT入门到实战】18. oauth2密码模式

橙三吉。 提交于 2020-03-17 20:19:43
某厂面试归来,发现自己落伍了!>>> 密码模式 在密码模式中,用户像客户端提供用户名和密码,客户端通过用户名和密码到认证服务器获取令牌。流程如下所示: A. 用户向客户端提供用户名和密码; B. 客户端向认证服务器换取令牌; C. 发放令牌。 B步骤中,客户端发出的HTTP请求,包含以下参数: grant_type:表示授权类型,此处的值固定为”password”,必选项。 username:表示用户名,必选项。 password:表示用户的密码,必选项。 scope:表示权限范围,可选项。 Postman配置密码模式,项目无需改动 Authorization为 client_id:client_secret 经过base64加密后的值 发送请求: 来源: oschina 链接: https://my.oschina.net/u/1046143/blog/3196956

【Spring Security + OAuth2 + JWT入门到实战】17. oauth2授权码模式

痴心易碎 提交于 2020-03-17 13:40:10
某厂面试归来,发现自己落伍了!>>> 简介 https://gitee.com/hekang_admin/spring-security 做oauth2之前项目架构给调整了一下,spring-boot更新到最新版本,真是一代版本一代神两天遇到很多问题这里一一解决。 <spring-boot.version>2.2.4.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR2</spring-cloud.version> <security.oauth.version>2.3.6.RELEASE</security.oauth.version> 授权码模式 授权码模式是最能体现OAuth2协议,最严格,流程最完整的授权模式,流程如下所示: A. 客户端将用户导向认证服务器; B. 用户决定是否给客户端授权; C. 同意授权后,认证服务器将用户导向客户端提供的URL,并附上授权码; D. 客户端通过重定向URL和授权码到认证服务器换取令牌; E. 校验无误后发放令牌。 其中A步骤,客户端申请认证的URI,包含以下参数: response_type:表示授权类型,必选项,此处的值固定为”code”,标识授权码模式 client_id:表示客户端的ID,必选项 redirect_uri:表示重定向URI,可选项 scope

前后端分离基于Oauth2的SSO单点登录怎样做?

℡╲_俬逩灬. 提交于 2020-03-17 10:33:50
某厂面试归来,发现自己落伍了!>>> 一、说明 单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼;本文主要介绍 跨域 间的 前后端分离 项目怎样实现单点登录,并且与 非前后端分离 的差异在那里?需要解决什么问题?。 前后端分离 的核心概念是后端仅返回前端所需的数据,不再渲染HTML页面,前端HTML页面通过AJAX调用后端的RESTFUL API接口并使用JSON数据进行交互 PS :关于 单点登录 主流的实现思路和原理请看文章《 Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定 》 二、实现差异 跨域 间的 前后端分离 项目也是基于共享统一授权服务(UAA)的 cookie 来实现 单点登录 的,但是与 非前后分离 不一样的是存在以下问题需要解决 没有过滤器/拦截器,需要在前端判断登录状态 需要自己实现 oauth2 的 授权码模式 交互逻辑 需要解决安全性问题, oauth2 的 clientSecret 参数放在前端不安全 三、实现架构 下面是 前后端分离 项目的三个角色(前端WEB工程、后端API工程、授权中心UAA)间进行 登录 / 单点登录 时的交互逻辑架构图 跨域的单点登录原理 在《 Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定