精华内容
下载资源
问答
  • To authenticate the user in my Application i need to get the ID_Token (signed token) is there a way to get OpenID Connect Token with Google Chrome Identity API ? Thanks for your help ! 解决方案 This ...

    I am developping a Google Chrome extension, to allow users to authenticate with their Google Accounts, i decided to use Chrome Identity API.

    To authenticate the user in my Application i need to get the ID_Token (signed token)

    is there a way to get OpenID Connect Token with Google Chrome Identity API ?

    Thanks for your help !

    解决方案

    This is a paste of my answer from the other thread https://stackoverflow.com/a/32548057/3065313

    I've came to the same problem yesterday and since I've found a solution, I might as well share it, as it wasn't that obvious. As far as i know Google does not provide a direct and documented way to do this, but you can use the chrome.identity.launchWebAuthFlow() function.

    First you should create an Web application credentials in google console and add the following url as a valid Authorized redirect URI: https://.chromiumapp.org. The URI does not have to exist, chrome will just catch the redirect to this URL and call your callback function later.

    manifest.json:

    {

    "manifest_version": 2,

    "name": "name",

    "description": "description",

    "version": "0.0.0.1",

    "background": {

    "scripts": ["background.js"]

    },

    "permissions": [

    "identity"

    ],

    "oauth2": {

    "client_id": ".apps.googleusercontent.com",

    "scopes": [

    "openid", "email", "profile"

    ]

    }

    }

    background.js:

    // Using chrome.identity

    var manifest = chrome.runtime.getManifest();

    var clientId = encodeURIComponent(manifest.oauth2.client_id);

    var scopes = encodeURIComponent(manifest.oauth2.scopes.join(' '));

    var redirectUri = encodeURIComponent('https://' + chrome.runtime.id + '.chromiumapp.org');

    var url = 'https://accounts.google.com/o/oauth2/auth' +

    '?client_id=' + clientId +

    '&response_type=id_token' +

    '&access_type=offline' +

    '&redirect_uri=' + redirectUri +

    '&scope=' + scopes;

    chrome.identity.launchWebAuthFlow(

    {

    'url': url,

    'interactive':true

    },

    function(redirectedTo) {

    if (chrome.runtime.lastError) {

    // Example: Authorization page could not be loaded.

    console.log(chrome.runtime.lastError.message);

    }

    else {

    var response = redirectedTo.split('#', 2)[1];

    // Example: id_token=&authuser=0&hd=&session_state=&prompt=

    console.log(response);

    }

    }

    );

    PS: If you don't need the oauth2 section in your manifest. You can safely omit it, and provide the identifiers and scopes in code only.

    EDIT:

    For those interested, you don't need the identity API. You can even access the token using a little trick with tabs API. The code is a little longer, but you have better error messages and control. Keep in mind that in the following example, you need to create Chrome App credentials.

    manifest.json:

    {

    "manifest_version": 2,

    "name": "name",

    "description": "description",

    "version": "0.0.0.1",

    "background": {

    "scripts": ["background.js"]

    },

    "permissions": [

    "tabs"

    ],

    "oauth2": {

    "client_id": ".apps.googleusercontent.com",

    "scopes": [

    "openid", "email", "profile"

    ]

    }

    }

    background.js:

    // Using chrome.tabs

    var manifest = chrome.runtime.getManifest();

    var clientId = encodeURIComponent(manifest.oauth2.client_id);

    var scopes = encodeURIComponent(manifest.oauth2.scopes.join(' '));

    var redirectUri = encodeURIComponent('urn:ietf:wg:oauth:2.0:oob:auto');

    var url = 'https://accounts.google.com/o/oauth2/auth' +

    '?client_id=' + clientId +

    '&response_type=id_token' +

    '&access_type=offline' +

    '&redirect_uri=' + redirectUri +

    '&scope=' + scopes;

    var RESULT_PREFIX = ['Success', 'Denied', 'Error'];

    chrome.tabs.create({'url': 'about:blank'}, function(authenticationTab) {

    chrome.tabs.onUpdated.addListener(function googleAuthorizationHook(tabId, changeInfo, tab) {

    if (tabId === authenticationTab.id) {

    var titleParts = tab.title.split(' ', 2);

    var result = titleParts[0];

    if (titleParts.length == 2 && RESULT_PREFIX.indexOf(result) >= 0) {

    chrome.tabs.onUpdated.removeListener(googleAuthorizationHook);

    chrome.tabs.remove(tabId);

    var response = titleParts[1];

    switch (result) {

    case 'Success':

    // Example: id_token=&authuser=0&hd=&session_state=&prompt=

    console.log(response);

    break;

    case 'Denied':

    // Example: error_subtype=access_denied&error=immediate_failed

    console.log(response);

    break;

    case 'Error':

    // Example: 400 (OAuth2 Error)!!1

    console.log(response);

    break;

    }

    }

    }

    });

    chrome.tabs.update(authenticationTab.id, {'url': url});

    });

    展开全文
  • 网上的教程都是一个地方贴的.配置gitlab webhooks 的时候需要填写一个 secret Token 也没说明,浪费了五分钟.. 下面贴下位置其实位置挺好找

    网上的教程都是一个地方贴的.在配置gitlab webhooks 的时候需要填写一个 secret Token 也没说明,浪费了五分钟..

    下面贴下位置其实位置挺好找

    展开全文
  • 将access_token保存在哪

    千次阅读 2017-05-24 23:41:20
    将access_token保存在哪

    在工程中创建一个InitServlet类,该类的代码如下:

    1. package org.liufeng.weixin.servlet;    
    2.     
    3. import javax.servlet.ServletException;    
    4. import javax.servlet.http.HttpServlet;    
    5. import org.liufeng.weixin.thread.TokenThread;    
    6. import org.liufeng.weixin.util.WeixinUtil;    
    7. import org.slf4j.Logger;    
    8. import org.slf4j.LoggerFactory;    
    9.     
    10. /**  
    11.  * 初始化servlet  
    12.  *   
    13.  * @author liuyq  
    14.  * @date 2013-05-02  
    15.  */    
    16. public class InitServlet extends HttpServlet {    
    17.     private static final long serialVersionUID = 1L;    
    18.     private static Logger log = LoggerFactory.getLogger(WeixinUtil.class);    
    19.     
    20.     public void init() throws ServletException {    
    21.         // 获取web.xml中配置的参数    
    22.         TokenThread.appid = getInitParameter("appid");    
    23.         TokenThread.appsecret = getInitParameter("appsecret");    
    24.     
    25.         log.info("weixin api appid:{}", TokenThread.appid);    
    26.         log.info("weixin api appsecret:{}", TokenThread.appsecret);    
    27.     
    28.         // 未配置appid、appsecret时给出提示    
    29.         if ("".equals(TokenThread.appid) || "".equals(TokenThread.appsecret)) {    
    30.             log.error("appid and appsecret configuration error, please check carefully.");    
    31.         } else {    
    32.             // 启动定时获取access_token的线程    
    33.             new Thread(new TokenThread()).start();    
    34.         }    
    35.     }    
    36. }    

    从上面的代码可以看出,InitServlet类只重写了init()方法,并没有重写doGet()和doPost()两个方法,因为我们并不打算让InitServlet来处理访问请求。init()方法的实现也比较简单,先获取在web.xml中配置的参数appid和appsecret,再启动线程TokenThread定时获取access_token。

    InitServlet在web.xml中的配置如下:

    1. <?xml version="1.0" encoding="UTF-8"?>    
    2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"    
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
    4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     
    5.     <a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" "="">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</a>>    
    6.     
    7.     <servlet>    
    8.         <servlet-name>initServlet</servlet-name>    
    9.         <servlet-class>    
    10.             org.liufeng.weixin.servlet.InitServlet    
    11.         </servlet-class>    
    12.         <!-- 配置获取access_token所需参数appid和appsecret -->    
    13.         <init-param>    
    14.             <param-name>appid</param-name>    
    15.             <param-value>wx617a123bb8bc99cd</param-value>    
    16.         </init-param>    
    17.         <init-param>    
    18.             <param-name>appsecret</param-name>    
    19.             <param-value>4d82cbbbb08714c12345b62d7hn3dcb8</param-value>    
    20.         </init-param>    
    21.         <load-on-startup>0</load-on-startup>    
    22.     </servlet>    
    23.     
    24.     <welcome-file-list>    
    25.         <welcome-file>index.jsp</welcome-file>    
    26.     </welcome-file-list>    
    27. </web-app>    

    InitServlet在web.xml中的配置与普通Servlet的配置有几点区别:1)通过配置<init-param>向Servlet中传入参数;2)通过配置<load-on-startup>使得Web服务器启动时就加载该Servlet;3)没有配置<servlet-mapping>,因为InitServlet并不对外提供访问。

    TokenThread的源代码如下:

    1. package org.liufeng.weixin.thread;    
    2.     
    3. import org.liufeng.weixin.pojo.AccessToken;    
    4. import org.liufeng.weixin.util.WeixinUtil;    
    5. import org.slf4j.Logger;    
    6. import org.slf4j.LoggerFactory;    
    7.     
    8. /**  
    9.  * 定时获取微信access_token的线程  
    10.  *   
    11.  * @author liuyq  
    12.  * @date 2013-05-02  
    13.  */    
    14. public class TokenThread implements Runnable {    
    15.     private static Logger log = LoggerFactory.getLogger(TokenThread.class);    
    16.     // 第三方用户唯一凭证    
    17.     public static String appid = "";    
    18.     // 第三方用户唯一凭证密钥    
    19.     public static String appsecret = "";    
    20.     public static AccessToken accessToken = null;    
    21.     
    22.     public void run() {    
    23.         while (true) {    
    24.             try {    
    25.                 accessToken = WeixinUtil.getAccessToken(appid, appsecret);    
    26.                 if (null != accessToken) {    
    27.                     log.info("获取access_token成功,有效时长{}秒 token:{}", accessToken.getExpiresIn(), accessToken.getToken());    
    28.                     // 休眠7000秒    
    29.                     Thread.sleep((accessToken.getExpiresIn() - 200) * 1000);    
    30.                 } else {    
    31.                     // 如果access_token为null,60秒后再获取    
    32.                     Thread.sleep(60 * 1000);    
    33.                 }    
    34.             } catch (InterruptedException e) {    
    35.                 try {    
    36.                     Thread.sleep(60 * 1000);    
    37.                 } catch (InterruptedException e1) {    
    38.                     log.error("{}", e1);    
    39.                 }    
    40.                 log.error("{}", e);    
    41.             }    
    42.         }    
    43.     }    
    44. }    

    代码中的第23行通过while(true){}构造了一个死循环(永久执行);第25行调用公众平台接口获取access_token;第29行让线程休眠7000秒再运行,即每隔7000秒获取一次access_token,保证access_token永不失效。在项目中的其他类,可以通过调用 TokenThread.accessToken.getToken() 来得到接口访问凭证access_token。在本地部署运行该程序,Tomcat启动完成后就会在控制台显示如下日志:

    1. [INFO ] weixin api appid:wx617a123bb8bc99cd    
    2. [INFO ] weixin api appsecret:4d82cbbbb08714c12345b62d7hn3dcb8    
    3. [INFO ] 获取access_token成功,有效时长7200秒 token:sFopJ9lMmLl4u-ad61ojKpS0TolhN2s3SnHoI2Mh5GgdiYb35i-7DG2T2CDyQKMe
    展开全文
  • <div><p>登陆后token未更新,请教一下你这边token在哪进行更新的</p><p>该提问来源于开源项目:shen100/mili</p></div>
  • 作为下一代互联网的基础设施,区块链token认为区块链比传递更重要,并且一直认为“皮肤不会被存储”。 然而,随着区块链的发展,我们发现它是通行证的通用证书和经济规则,这促进了数字货币的复杂性。一般经济的重要...

    长期以来,IT技术社区一直沉迷于互联网的基础技术。作为下一代互联网的基础设施,区块链token认为区块链比传递更重要,并且一直认为“皮肤不会被存储”。
    然而,随着区块链的发展,我们发现它是通行证的通用证书和经济规则,这促进了数字货币的复杂性。一般经济的重要性比区块链的基础设施更重要。 20年的互联网眼球经济、流量经济等等,其价值重建和价值创造速度和规模远远超过互联网基础设施。通过是基于实体经济、为实体经济服务。一般思维与当前的货币思维根本不同。通行证是使用的,现在大多数硬币都没用,即使不考虑可以使用的东西。传递灵感并鼓励大家证明各种权利,如门票、点、合同、证书、点卡、证券、权限、资格等全部出来进行令牌化(tokenization),换上区块链,放入交易市场,让市场自动找到它的价格,而在实际经济生活中可以消耗、可以验证,是可以使用的东西,这是接近实体经济。那么整体经济是什么?经济充分利用证书。

    为什么一般经济学可以带来新一轮的数字经济革命,这需要从以下几点进行分析。首先,在供应方面,证书的供应完全以市场为导向,非常自由。任何组织、任何组织、都可以根据自己的资源和服务功能颁发权益证书,证书可以随时在区块链上运行。可验证的、可跟踪、是可交换的,其安全性、可信度、可靠性无论如何都无法访问。因此,现在每个组织和个人都可以轻松写出自己的承诺、“passification”、市场化。这是人类社会一直以来的。token是什么意思推荐阅读:什么是token?TOKEN是什么意思

    没有能力。
    第二,流通的速度,这是关键。区块链上的传递速度可以比之前的卡、优惠券、点、快几十万倍,并且由于密码学的应用,这种流通和交易非常可靠,并且争议和摩擦将是数十万。减少了一倍。如果在传统经济时代,衡量整体社会经济发展的重要指标是货币流通速度,而在互联网经济时代,衡量一个国家、发展程度的重要指标是网络流量那么在互联网+经济时代,证书的总流通率将成为最重要的经济指标之一。当我们每个人、每个组织的各种通行证都在、交易时,我们的生产和生活方式将完全改变。
    第三,找到价格。由于通行证的高速流通和交易,每个通行证的价格将在市场上快速确定。这是传递经济的看不见的手。它比今天的市场价格信号更敏感,更复杂。时代,它将把有效市场乃至完美市场推向每一个微观领域。
    四,证书的应用,即证书周围的智能合约申请。只有这一点才能激发各种创新,创新机器、创造的创新浪潮将远远超过以往计算机和互联网时代的总和。基于这四点理解,我们坚信Pass是引导我们走向下一代互联网新经济的关键。

    展开全文
  • token它更广为人知的姓名是“代币”,但专业的“链圈”人看来,它更精确的翻译是“通证”,代表的是区块链上的一种权益证明,而非钱银。加密钱银是一种新式的职业,到现在为止,世界上还没有比较威望且体系的书本...
  • 怎么能够让服务器知道当前请求服务的是台客户端呢?我们举个生活中的例子:你去图书馆(服务端)借书(请求服务)。先得办卡(登录获取session_id)吧,放兜里(cookie)。去刷卡处刷卡看看卡是不是伪造的,看看卡里的信息...
  • 一、我们先解释一下他的含义:1、Token的引入:Token客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,这样的背景下,Token便...
  • // 请求头加token // config.headers['Authorization'] = 'Bearer ' // 请求头加token // config.headers.post['Content-Type'] = 'application/x-www-form-urlencoded' // } startLoading(); return config; }...
  • 疑问就里面: ![token介绍](https://img-ask.csdn.net/upload/201708/31/1504178270_668470.png) 这句话:“Token的目的是为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。...
  • 如果项目并不大,JWT是个好选择,天然的去中心化模式,会话状态由令牌本身自解释,简单粗暴但是缺点页很明显,如题所示,一旦下发便不受服务端控制,如果发生token泄露,服务器也只能任其蹂躏,其未过期期间不能有...
  • 离职的最后一个月,帮两位同事申请加薪,确切的说,申请加薪是导火索,我被扣上了哄抬同事工资以提高自己工资的帽子,推动前后端分离工作中处处碰壁,点燃了压抑许久的离职冲动,领导培养自己四五年,不让声张,...
  • jwt与token+redis,种方案更好用?

    千次阅读 2020-08-05 11:17:37
    设计no session系统时,遇到了有两种可选方案:jwt与token+redis。 JWT: 生成并发给客户端之后,后台是不用存储,客户端访问时会验证其签名、过期时间等再取出里面的信息(如username),再使用该信息直接查询...
  • 首先我们要知道token是个什么东西? 其实token就是信息加密后生成的登录凭证,tokens 是多用户下处理认证的最佳方式。因为 无状态、可扩展(不需要把session存在本地) ...你可以存储session中, se
  • Token经济又名通证经济,指的是利用区块链发行代币,通过代币激励,以期获得用户与平台的共同增长经济模式。关于token经济的讨论一直是区块链...那token经济的优势到底在哪,它真的会成为一种新的经济模式吗?潜在...
  • 最近学习小程序,做个笔记,希望和大家相互交流学习小程序地图导航,显示天气源码 https://github.com/zzwwjjdj319/miniProgramAmap信微小程序猜拳小游戏源码https://gitee.com/sccqcd/wechat_applet_weather_map...
  • <div><p>请问wifi设备端mqtt推送条topic,...阿里后台日志处已看到mqtt推送带有token的topic,但ios端获取不到token</p><p>该提问来源于开源项目:alibaba/AliOS-Things</p></div>
  • 当我们使用小程序中做用户登录的时候, 通常是和api 一样的, 后台给用户颁发一个token, 小程序端(前端)用本地缓存记录一下这个 token ,以后每次请求的时候, 带上这个token 对后端发起请求, 后端解析token中的...
  • token鉴权前端操作

    2020-07-29 10:04:13
    前言: 就一天天听说后台用的OAuth 2.0进行token鉴权,那前端需要...其实不管是种类型,前端需要做的只是拿到这个token,存起来,然后使用规定的传递方式每次请求的时候带上它传到后台即可。 操作: 1、登录后获
  • session、cookie、token

    2019-09-15 02:42:26
    session保存在哪? cookie保存在哪?除了sessionid里面还有什么? 除了cookie,还有什么方式实现session? token是啥? token的好处? session、cookie、token 总览: http是一个无状态协议,客户端向服务器...
  • 后端返回 token cookie,header,或者直接返回的内容中都可以,看...种方法不重要,重要的是要写对了,比如楼主 php 中设置 header 就是写错了,不太会用 php 的函数的时候,可以去官网的文档中找一下...
  • TOKEN 后端进行加密,前台接收后每次请求放在头部发给后台做解密效验 有以下疑惑: ...3.网上有看到说https 看不到请求头的token值,我试了下可以看到啊 位大神解答一下,困扰了很久也找不到答案!
  • 后端返回 token cookie,header,或者直接返回的内容中都可以,看...种方法不重要,重要的是要写对了,比如楼主 php 中设置 header 就是写错了,不太会用 php 的函数的时候,可以去官网的文档中找一下...
  • 什么是json web token (jwt), 这个一个协议安全的标准,用来保证数据的一致性及安全性的。 这次说下加jwt的非对称加密方式. 注: rsa的性能很烂…先聊聊,咱们常用的对于http api加密的方式有几种?另外还有一篇...
  • c# asp.net 中使用token验证

    千次阅读 2019-04-16 11:05:00
    这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。 流程上是这样的: 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给...
  • Express中的session和token

    2020-03-13 20:06:41
    平常我们使用网站时,只需要登录一次即可,之后再访问这个网站就不需要再进行登录操作,本文将介绍Express中的session和token,它们是进行身份验证方法。 HTTP 是一种没有状态的协议,也就是它并不知道具体是谁,...
  • Token浅解(一)

    2018-02-01 20:57:43
    一.是什么? 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。 Token是服务端生成的一串字符串,客户端第一次登陆后,服务器返回Token,客户端进行本地存储,以后客户端...用在哪(产生背景)?
  • cookie、session、token

    2020-11-25 10:39:14
    登陆后服务端给你一个要是的前半段 后半段服务端 二者加一起才可以证明你是用户,然后通过这个来找到你是谁 存在服务器端的内存中 客户端的session id存储服务器中 token: 登录之后 返回一个代表你身份的加密...
  • SpringBoot实现token认证(基于缓存)

    千次阅读 2019-07-12 18:05:18
    token意为令牌,为一个随机的字符串UUID生成,用来标记来访用户的身份,通过该token,可以得出是一个用户向我服务器访问资源。 三、验证流程 当用户登录成功之后,则向客户端发送token,用来标记该用户,以后...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 299
精华内容 119
关键字:

token在哪