精华内容
下载资源
问答
  • 默认情况下两个版本的插件都会安装版本1的类IDE23FE9C6-778E-49D4-B537-38FCDE4887D8版本2的类ID9BE31822-FDAD-461B-AD51-BE1D1C159921我们推荐使用版本2的,但是对于最简单的播放器来说没有什么区别以下连个...

    我们用VLC播放器安装VLC的active插件后,默认情况下两个版本的插件都会安装

    版本1的类ID是E23FE9C6-778E-49D4-B537-38FCDE4887D8

    版本2的类ID是9BE31822-FDAD-461B-AD51-BE1D1C159921

    我们推荐使用版本2的,但是对于最简单的播放器来说没有什么区别

    以下是连个版本的代码,我们可以将

    value="udp://@239.255.1.1:1234"

    中的双引号内容替换成我们能用VLC播放的网址

    版本1代码

    CCTV 新闻

    width="320" height="240" events="True" id="vlcv1">

    版本2代码

    CCTV 新闻

    width="320" height="240" events="True" id="vlcv2">

    华盛顿中国电台

    华盛顿中国电台

    width="640" height="480" events="True" id="vlcv2">

    展开全文
  • 解决问题:如果使用Github等第三方账号登录自己搭建的网站 一、第三方登录原理 所谓第三方登录,实质就是 OAuth 授权 1.什么是OAuth? OAuth一种身份验证协议,用于使用其他服务提供商来对应用程序中的用户进行身份...

    前言

    解决问题:如果使用Github等第三方账号登录自己搭建的网站

    一、第三方登录原理

    所谓第三方登录,实质就是 OAuth 授权

    1.什么是OAuth?
    OAuth是一种身份验证协议,用于使用其他服务提供商来对应用程序中的用户进行身份验证和授权。

    在任何 OAuth 流程中都有三个参与者:

    1. 客户端 - 登录的人员或用户
    2. 使用者 - 客户端想要登录的应用程序
    3. 服务提供者 - 用户通过其进行身份验证的外部应用程序。

    这里使用Github为例,大致流程如下

    1. A 网站让用户跳转到 GitHub。
    2. GitHub 要求用户登录,然后询问"A 网站要求获得 xx 权限,你是否同意?"
    3. 用户同意,GitHub 就会重定向回 A 网站,同时发回一个授权码。
    4. A 网站使用授权码,向 GitHub 请求令牌。
    5. GitHub 返回令牌.
    6. A 网站使用令牌,向 GitHub 请求用户数据。

    二、使用Github创建OAuth Apps

    1. 进入Github.com等登录账号,点击右上角,选择Settings
      在这里插入图片描述
    2. 设置页面右侧选择Developer Settings
      在这里插入图片描述
    3. 选择OAuth Apps,创建新App
      在这里插入图片描述
    4. 按照要求输入信息
      在这里插入图片描述
    5. 成功创建应用后,Github会生成一个Client IDClient Secret,一定要保存好这两个东西,之后会有大用!

    三、使用Github账户登录自己搭建的网站

    这里使用的创建是iris创建,网站搭建方法和基本请求这里就不多讲了,又不懂了可以看看我之前写的这三篇博客

    1. Go web系列 iris框架的搭建
    2. Go Web系列 iris框架Get…基本请求
    3. Go Web系列 iris框架路由组

    这里就重点讲解使用Github账号登录
    首先通过Get请求,请求跳转到Github授权网站

    使用第三方包
    go get golang.org/x/oauth2

    设置一些参数

    //使用github登录的参数
    var githubOauthConfig = &oauth2.Config{
    	ClientID:     "xxxxxx",
    	ClientSecret: "xxxxxxx",
    	RedirectURL:  "http://127.0.0.1:9999/login/aouth",
    	Scopes:       []string{"repo", "user"},
    	Endpoint: github.Endpoint,
    }
    

    跳转到Github授权页面

    //跳转到Github授权页面
    //url::  http://localhost:52873/login/github
    //GET
    func (mc *Logincontroller) GetGithub() mvc.Result{
    	//这里需要跳转到Github页面,可以使用后端跳转,也可以将url发送到前端跳转
    	url := githubOauthConfig.AuthCodeURL(oauthStateString)
    	//重定向到授权页面
    	return mvc.Response{
    		Path: url,
    	}
    }
    

    通过返回的code申请access_token,使用aceess_token,post请求申请数据

    //获取Github权限后,跳转页面
    //url::  http://localhost:52873/login/Aouth
    //GET
    func (mc* Logincontroller) GetAouth() mvc.Result{
    	//获取URL中的code
    	code:=mc.Ctx.URLParam("code")
    	//使用code申请access_token
    	token, err := githubOauthConfig.Exchange(oauth2.NoContext, code);if err != nil {
    		fmt.Printf("Code exchange failed with %s\n", err)
    	}
    	response, err := http.Get("https://api.github.com/user?access_token=" + token.AccessToken)
    	defer response.Body.Close()
    	contents, err := ioutil.ReadAll(response.Body)
    	fmt.Printf("Content: %s\n", contents)
    	var githubuserinfo datamodels.GithubUserinfo
    	err=json.Unmarshal([]byte(contents),&githubuserinfo)
    	fmt.Println(githubuserinfo)
    	//返回值,这里可以选择保存数据到Mysql完成用户注册
    	return mvc.Response{
    		Text: "chenggong",
    	}
    }
    

    总结
    今天以Github账号为例讲解了如何使用第三方账号登录自己搭建的网站,方法简单,如有错误,还请谅解!
    之前一段时间忙着期末开始,没来得及更新博客,之后有时间就更新。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    2020.7.24

    展开全文
  • web应用中假如没有做会话控制,会出现这样的情况,A登录账号,B也登录账号,都同样的账号,A修改了信息,B会看到修改的信息,这样的用户体验不好,B会觉得我没有修改啊,为什么信息会改变。而做会话控制后,...

      在web应用中假如没有做会话控制,会出现这样的情况,A登录了账号,B也登录了账号,都是同样的账号,A修改了信息,B会看到修改的信息,这样的用户体验不好,B会觉得我没有修改啊,为什么信息会改变。而做会话控制后,A先登录,B再登录,那么B会把A的登录挤下线。

      实现思路:采用时间戳比较

      1首先用户登录时,后台是不需要做拦截的,前台把用户名和密码传到后台,后台生成JWT格式的token给前台,并以token为key,用户信息为value存入redis中

      2其他url路径,过滤器会拦截请求,先判断前台是否携带了token,或者是携带了token,但是已经失效了(redis中查不到)会直接返回前台错误信息,这时候会以用户名为key,从redis中查询token,没有就以key为用户名,value为token存入redis.放行请求,若从redis查询的token和从前台传进来的token相同,放行请求,若从redis查询的token和从前台传进来的token不相同,如果从前台传递的token的时间戳大于redis中的,则覆盖redis中的token,否认注销token,返回您的账号已经在其他设备登录,拦截请求。

    public class CompareKickOutFilter extends KickOutFilter {
        @Override
        public boolean isAccessAllowed(HttpServletRequest request, HttpServletResponse response) {
            String token = request.getHeader("Authorization");
            String username = JWTUtil.getUsername(token);
            String userKey = PREFIX + username;
            RBucket<String> bucket = redissonClient.getBucket(userKey);
            String redisToken = bucket.get();
    
            if (StringUtils.isBlank(redisToken)) {// 第一次设置
                bucket.set(token);
            } else if (token.equals(redisToken)) { // 相同的token
                return true;
            } else {
                Long redisTokenUnixTime = JWTUtil.getClaim(redisToken, "createTime").asLong();
                Long tokenUnixTime = JWTUtil.getClaim(token, "createTime").asLong();
                if (tokenUnixTime.compareTo(redisTokenUnixTime) > 0) {
                    // 传进来的token是离现在最新的,覆盖旧的token
                    bucket.set(token);
                } else {
                    // 注销当前token
                    userService.logout(token);
                    sendJsonResponse(response, 4001, "您的账号已在其他设备登录");
                    return false;
                }
            }
            return true;
        }
    }

     

    项目结构:

     

    项目地址:https://github.com/jake1263/loginCtl

     

    转载于:https://www.cnblogs.com/moris5013/p/11128135.html

    展开全文
  • 要么借助三方账号系统的Oauth2.0能力,要么作为一个子业务系统直接使用单点登录的能力。今天这一篇文章所要总结讲述的,就是如何在一个多模块web系统中,构建用户登录能力的技术方案。SSO单点登录设计认识SSO...

    前面在《单web应用系统登录设计》中,都是从一个小型独立的web系统角度做的登录设计。要么是借助三方账号系统的Oauth2.0能力,要么是作为一个子业务系统直接使用单点登录的能力。

    今天这一篇文章所要总结讲述的,就是如何在一个多模块web系统中,构建用户登录能力的技术方案。

    SSO单点登录设计

    认识SSO机制

    对于对于一个大型的系统,往往具备两个及以上的产品或子业务系统。将其中的用户登录逻辑抽离出来,统一在一个页面进行一次页面登录,就能同时在各个子业务系统中达到登录的效果。

    打个比方,SSO 和我们去游乐园时购买的通票很像。

    bdb9818a499cdc1a0d0e87e5027f128b.png

    我们只要买一次通票,就可以玩所有游乐场内的设施,而不需要在过山车或者摩天轮那里重新买一次票。在这里,买票就相当于登录认证,游乐场就相当于使用一套 SSO 的公司,各种游乐设施就相当于公司的各个子业务系统。

    a15a804192ef4eec2da88adb5cf4d791.png

    同域下的单点登录

    对于同域下的单点登录,因为cookie可以同域共享,因此可以通过共享会话的形式快速构建该能力。
    即用户模块完成用户登录后,在一级域名下设置cookie, 用户在访问时业务模块时,携带该cookie,从共享session会话中获取用户登录凭证。

    但在大型的web应用中,sessoin会话在不同模块中共享是不安全的。其他业务模块往往通过服务互信的方式来获取用户凭证。和token鉴权或oauth鉴权模式一样,仍然需要走到用户模块去进行鉴权。在SSO的术语中,提供鉴权的用户模块又可以叫CAS(Central Authentication Service)。下面,就梳理一下CAS的交互流程。

    CAS (Central Authentication Service)

    术语解释

    TGT:Ticket Grangting Ticket

    TGT 是 CAS 为用户签发的登录票据,拥有了 TGT,用户就可以证明自己在 CAS 成功登录过。TGT 封装了 Cookie 值以及此 Cookie 值对应的用户信息。当 HTTP 请求到来时,CAS 以此 Cookie 值(TGC)为 key 查询缓存中有无 TGT ,如果有的话,则相信用户已登录过。

    TGC:Ticket Granting Cookie

    CAS Server 生成TGT放入自己的 Session 中,而 TGC 就是这个 Session 的唯一标识(SessionId),以 Cookie 形式放到浏览器端,是 CAS Server 用来明确用户身份的凭证。

    ST:Service Ticket

    ST 是 CAS 为用户签发的访问某一 service 的票据。用户访问 service 时,service 发现用户没有 ST,则要求用户去 CAS 获取 ST。用户向 CAS 发出获取 ST 的请求,CAS 发现用户有 TGT,则签发一个 ST,返回给用户。用户拿着 ST 去访问 service,service 拿 ST 去 CAS 验证,验证通过后,允许用户访问资源。

    CAS实现会话登录的步骤:

    0ee3d152a8d2bef9b27c43e2bb013030.png

    1. 用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数

    2. sso认证中心发现用户未登录,将用户引导至登录页面

    3. 用户输入用户名密码提交登录申请

    4. sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌。
      (该步骤即创建了TGC(全局会话cookie)/TGT(全局会话session)/ST(授权令牌)

    5. sso认证中心带着令牌跳转最初的请求地址(系统1)

    6. 系统1拿到令牌,去sso认证中心校验令牌是否有效

    7. sso认证中心校验令牌,返回有效,注册系统1

    8. 系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源

    9. 用户访问系统2的受保护资源

    10. 系统2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数

    11. sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌

    12. 系统2拿到令牌,去sso认证中心校验令牌是否有效

    13. sso认证中心校验令牌,返回有效,注册系统2

    14. 系统2使用该令牌创建与用户的局部会话,返回受保护资源

    (这里的流程仅展示了子业务系统内访问自己的受保护资源的方式。对于子业务系统内访问其他业务系统的受保护资源,其实现原理及方案则需要引入Oauth2.0机制,这里不做细究。)

    用户登录成功之后,会与sso认证中心及各个子系统建立会话,用户与sso认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过sso认证中心,全局会话与局部会话有如下约束关系:

    1. 局部会话存在,全局会话一定存在

    2. 全局会话存在,局部会话不一定存在

    3. 全局会话销毁,局部会话必须销毁

    第1点和第2点,因为局部会话都是由子业务系统向认证中心主动发起鉴权,所以说天然满足。但对于第3点,则需要一个通知机制,从认证中心向子业务系统发出。

    CAS实现会话注销的步骤

    68255298a229607b0b0960b3253702f8.png

    1. 用户向系统1发起注销请求

    2. 系统1根据用户与系统1建立的会话id拿到令牌,向sso认证中心发起注销请求

    3. sso认证中心校验令牌有效,销毁全局会话,同时取出所有用此令牌注册的系统地址

    4. sso认证中心向所有注册系统发起注销请求

    5. 各注册系统接收sso认证中心的注销请求,销毁局部会话

    6. sso认证中心引导用户至登录页面

    因为这个通知机制,需要在认证中心额外存储ST与注册系统的映射关系,并通过异步消息队列完成通知。对应的业务系统也得维护这个局部会话的时效性。

    CAS的技术能力

    CAS采用客户端/服务端架构

    CAS Client:

    1. 拦截子系统未登录用户请求,跳转至sso认证中心

    2. 接收并存储sso认证中心发送的令牌

    3. 与CAS Server通信,校验令牌的有效性

    4. 建立局部会话

    5. 拦截用户注销请求,向sso认证中心发送注销请求

    6. 接收sso认证中心发出的注销请求,销毁局部会话

    CAS Server:

    1. 验证用户的登录信息

    2. 创建全局会话

    3. 创建授权令牌

    4. 与CAS Client通信发送令牌

    5. 校验CAS Client令牌有效性

    6. 系统注册

    7. 接收CAS Client注销请求,注销所有会话

    统一网关+授权中心

    对于一个使用微服务架构的大型系统来说,相比于独立一个CAS服务,构建一个API网关可能是一个更优雅的解决方案。将用户的认证鉴权统一到网关模块进行统一处理,

    鉴权逻辑描述

    1. 当客户端第一次请求服务时,网关发现未携带token,向授权中心请求授权

    2. 客户端完成对用户进行信息认证(登录)

    3. 认证通过,将用户信息进行签名加密形成token,返回给客户端

    4. 客户端每次请求,都携带认证的token

    5. 发送给服务端的请求,首先经过网关,网关向授权中心发起鉴权,鉴权通过则放行。d2d9367eca58d86466a6030166b98127.png

    该方案之于SSO,就犹如token鉴权之于session会话管理。该方案相较于CAS模式,有一个天然的优势,即同时支持多端的登录鉴权。

    单设备登录设计

    对于一些敏感应用,需要有一定的风控措施,例如说仅允许单设备登录。对应于web端,相当于仅允许一个登录凭证或sessionId有效,你如果换了浏览器或异地登录,系统则需要将以前的会话踢出,并警示风险。

    在CAS模式下,这需要SSO认证中心内缓存的userId与ST的映射关系再添加上一些其他信息。例如将userId和全局sessionId一起作为key来检索ST, 则可以保证换了浏览器或主机的情况下可以识别到重复登录了,如果将urserId和ip一起作为key来检索ST,则可以保证同一时刻异地登录可以得到检测。

    同理,网关token模式下,可以将userId和token/ip一起做key来检索用户登录凭证。而在App侧,单设备登录可以控制得更加精细。

    当然,如果收集更多用户登录的环境信息或历史行为信息,可以更精准地对用户做风险控制。

    展开全文
  • 什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证明“你你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功) 互联网中的认证: ...
  • 公司办公用的AD域环境,每个人用域帐号...域用户登录到自己的机器后,打开web页面,不用再输入帐号密码就已经实现登录了,并且在web页面上输出该域名账号。 非域用户打开web登陆页面需要再输入一次帐号密码才行。
  • 点击上方蓝色文字关注公众一、什么是servlet? 处理请求和发送响应的过程由一种叫做Servlet的程序来完成的,并且Servlet为了解决实现动态页面而衍生的东西。理解这个的前提了解一些http协议的东西,并且知道B/...
  • 作者:阿东微信公众号:杰哥的IT之旅(ID:Jake_Internet)一、OAuth 介绍OAuth2一个授权框架,或称为授权标准,可以使第三方应用程序或客户端获得对http服务上用户账号信息的有限访问权限。OAuth2通过将用户身份...
  • 小编我几日不在江湖,江湖就传闻小伙伴们登录交换机时对密码惆怅得很,还传闻小伙伴们疑问最多的是:交换机的缺省密码都是什么呢???忘记密码了肿么办???小编我来也,瞬间变身诸葛神人给小伙伴们授业解惑啦,让...
  • JWT 简介什么是 JWTJWT JSON Web Token 的缩写,为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准((RFC 7519)。定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 对象的形式安全的传递...
  • 配置授权回调的域名,至于什么是OAuth2.0,大家自行百度吧。这里的域名也要与上面的域名一致。配置成功会有通过安全监测的提示,这里不上截图了。 注意: 1、这里填写的域名(一个字符串),而不是URL,因此...
  • Java Web开发之关于登录的那点事

    千次阅读 2017-01-17 14:12:56
    上网的时候总能碰到这档子事,要回个什么帖子的时候,检测到你没登录,直接跳转到登录界面去了,或者账号被好基友在别的地方登录,我的被挤掉了,得重新登录,今儿就用过滤器Filter和监听器Listener实现这两个功能。...
  • 类似QQ,同一个账号,只能在一个地方登录。另一个地方在登录,原本的就注销了。那么该功能如何实现? 想必我们都将用户存到session域当中,那有什么域范围比session大的呢?那自然ServletContext,编写一个 ...
  • SSL证书是什么

    2019-03-22 14:50:16
    SSL证书是什么 可能很多人都不太清楚SSL证书是什么,其实SSL证书概念非常简单,SSL证书是...HTTPS加密传输协议可以保护用户私密信息(银行卡号、登录账号、密码)的安全,HTTPS协议以及逐渐称为保护社交媒体网站浏览...
  • 企业Web应用创新实验

    千次阅读 2013-09-18 16:25:01
    基于Web的企业应用,如CRM、项目管理、OA等软件,尽管经历十几年发展,所谓的理论有所发展,但构成应用的UI和人机交互方式,几乎没有什么变化。你明白我的意思吗?不明白?我的意思,例如,使用(即使试用)应用...
  • 所以感觉这种访问方式不安全,有什么输入访问内部界面路径然后自动跳转到登录界面去登陆访问,而不是直接打开? 例如:我的登陆窗口路径:http://192.168.168.22,我会对输入的账号密码验证无误后进行登陆操作...
  • web安全

    2019-04-18 14:13:24
    1.【技术知识 3】第44条 2.接收用户关键词,直接...5.对更新字段的限制,不要用户传什么就更新什么(加密传参可以防止用户随意添加更新字段) 6.限制用户密码不能弱密码,也就杜绝了测试账号的随意性,免得到...
  • web测试用例

    2021-04-01 19:36:17
    Wed测试用例 含有账号密码输入框,登陆和取消按键 ...考察:面试者是否熟悉各种测试方法,是否有比较丰富的web测试经验,是否了解web开发,设计case的能力。 一、功能测试 1、什么都不输入,点击提
  • 在Java Web与MySQL数据相连接之前,我们需要做一些准备工作,保证连接后的没有什么问题,当然以下的操作都保证你的电脑上安装了Tomcat为前提的,如果还没有安装的同学们可以去百度一下教程,有很多详细的教程。...
  • 在上一讲中,我们介绍了 XSS 攻击。今天,我们来介绍另外一种常见的 Web 攻击:SQL 注入。...奇怪的,第二天,黑客还是能够继续登录管理员账号。问题来了,黑客究竟怎么做到的呢?你觉得这里面的问题究竟出在哪.
  • Web应用认证授权

    2021-01-18 21:44:00
    一. 概述 1.什么是认证 认证,简单的来说就是判断用户或者访问者的身份。当你访问服务器时,你需要证明你的身份,有没有资格访问资源,输入账号和密码登录的过程就是认证。
  • Bugku 做题记录 web11~20

    2021-03-01 10:10:47
    打开场景找不到什么线索,题目中提示 后门。 用御剑扫描一下后台,扫描到了 /shell.php 打开 /shell.php 后台。 —— —— web12 打开场景,一个登陆界面。 尝试登录,发现两个问题,一个账号密码都不知道,还有...
  • 前言 很多做企业网站的朋友,都喜欢有一个关于我们、联系...2、然后我们登录百度账号,申请成为百度开发者,如果你已经的话,就需要这样操作了。 3、当我们成为百度开发者后,我们就可以享有各种服务了,点击导...
  • 一、CSRF 攻击是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造。攻击者盗用了你的身份,以你的名义发送恶意请求。 CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于...
  • 我的login.jsp ; charset=UTF-8" pageEncoding="UTF-8"%> <!... ; charset=ISO-8859-1"> <title>Login ... user...但是最后我要显示出来的账号名字null 不知道哪里出错了 希望各位能帮我看一下谢谢了
  • Web端一个简单的验证码制作

    多人点赞 2020-04-07 16:13:51
    先来说说为什么会有验证码这么个反人类的玩意 每次输入验证码 365°的都错误 然后重新输入 随着时间的推移 验证码这玩意 越来越高级越来越难 某班的验证码还是汉字 简直了 但是呢 深处互联网时代 这个验证码可以...
  • 有许多功能,需要我们主动调用微信的接口,比如修改公众号菜单,主动给用户发消息等。此时微信会对我们的权限进行...关于密钥是什么,参考web安全(1)。 获取access_token 用你的appID和appsecret替换以下代码x...
  • 承接上一篇《Web应用安全————账号冻结与 Session 实时失效》关于 session 的学习,本篇博客聚焦如何通过 shiro 解决会话固定导致的漏洞问题。 首先,没怎么接触过应用安全方面的小伙伴可能会发起疑问 - 什么是...
  • easy_login 题目说明: ...什么,大佬说我的程序...打开登录框 尝试注册admin用户,按提示来看应该已经有admin用户了,需要登录admin账号获取flag 查看源码 是登录注册等功能的一些函数,顶部有提示(比赛的时...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 212
精华内容 84
关键字:

web登录账号是什么