gitlab的private token有啥用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gitlab的private token有啥用相关的知识,希望对你有一定的参考价值。
这个是用来代表你用户身份的字符串,http请求中包含这个 就可以免输入用户名和密码,方便不同系统之间的代码提交等。比如code review 系统使用这个tocken将review通过的请求提交到gitlab。tocken验证用户身份权限的。 参考技术A 首先是Token主类。类很简单package com.company.util;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
public class Token
private static final String TOKEN_LIST_NAME = "tokenList";
public static final String TOKEN_STRING_NAME = "token";
private static ArrayList getTokenList(HttpSession session)
Object obj = session.getAttribute(TOKEN_LIST_NAME);
if (obj != null)
return (ArrayList) obj;
else
ArrayList tokenList = new ArrayList();
session.setAttribute(TOKEN_LIST_NAME, tokenList);
return tokenList;
private static void saveTokenString(String tokenStr, HttpSession session)
ArrayList tokenList = getTokenList(session);
tokenList.add(tokenStr);
session.setAttribute(TOKEN_LIST_NAME, tokenList);
private static String generateTokenString()
return new Long(System.currentTimeMillis()).toString();
/** *//**
* Generate a token string, and save the string in session, then return the token string.
*
* @param HttpSession
* session
* @return a token string used for enforcing a single request for a particular transaction.
*/
public static String getTokenString(HttpSession session)
String tokenStr = generateTokenString();
saveTokenString(tokenStr, session);
return tokenStr;
/** *//**
* check whether token string is valid. if session contains the token string, return true.
* otherwise, return false.
*
* @param String
* tokenStr
* @param HttpSession
* session
* @return true: session contains tokenStr; false: session is null or tokenStr is id not in session
*/
public static boolean isTokenStringValid(String tokenStr, HttpSession session)
boolean valid = false;
if(session != null)
ArrayList tokenList = getTokenList(session);
if (tokenList.contains(tokenStr))
valid = true;
tokenList.remove(tokenStr);
return valid;
在jsp页面端。
首先import该类:
<%@ page import="com.company.util.Token" %>
表单包含隐藏的token字符串:
<form>
<input type="hidden" name="<%=Token.TOKEN_STRING_NAME %>" value="<%=Token.getTokenString(session) %>">
</form>
在Servlet中添加如下代码。
if(Token.isTokenStringValid(request.getParameter(Token.TOKEN_STRING_NAME), request.getSession()))
//进行正常业务流程本回答被提问者和网友采纳
OpenID Connect 访问令牌有啥用?
【中文标题】OpenID Connect 访问令牌有啥用?【英文标题】:What is the OpenID Connect access token for?OpenID Connect 访问令牌有什么用? 【发布时间】:2018-04-16 20:47:13 【问题描述】:OpenID Connect JWT 令牌同时包含 id_token
和 access_token
(如 "access_token": "SlAV32hkKG"
)。 access_token
是干什么用的?
回答示例
只是添加一个例子来补充来自this linked article的答案
用户信息端点请求GET /userinfo HTTP/1.1
Host: openid.c2id.com
Authorization: Bearer SlAV32hkKG
用户信息端点响应
HTTP/1.1 200 OK
Content-Type: application/json
"sub" : "alice",
"email" : "alice@wonderland.net",
"email_verified" : true,
"name" : "Alice Adams",
"picture" : "https://c2id.com/users/alice.jpg"
【问题讨论】:
【参考方案1】:tl;dr - 访问令牌授予访问受保护资源的授权,其中 ID 令牌 被客户端用于身份验证。
访问令牌
作为 OAuth2.0 的扩展,OpenID Connect 保留了 OAuth2.0 规范中定义的令牌/参数。 访问令牌就是这样一种东西。正如协议所定义的,访问令牌用于访问受保护的资源。它取代了过去使用的用户凭据、手动生成的令牌或安全密钥(例如:- 考虑基本身份验证)。
请注意,访问令牌可能是不透明的字符串。这意味着接收它的客户不能消费任何东西。但是授权服务器知道它是什么。例如,自省端点 (RFC7662) 可用于验证访问令牌的有效性。并且访问令牌也可以是 JWT,具体取决于使用和实现。
ID 令牌
这是 OpenID Connect 引入 OAuth2.0 的内容。 ID 令牌是 JWT,客户端使用它来验证最终用户(资源所有者)。通过验证 ID 令牌,客户端可以进行身份验证。由于这一事实,人们可以说它可以使用一次。
另请注意,在某些实现中,ID 令牌被用作不记名令牌。这意味着,ID 令牌用作身份验证和授权的访问令牌。
【讨论】:
【参考方案2】:您的问题的答案在于specification 的第 5.3 和 16.4 节。访问令牌用于访问作为受保护资源的 userinfo 端点。
16.4。访问令牌披露
访问令牌是用于访问受保护资源的凭据,如 OAuth 2.0 [RFC6749] 第 1.4 节中所定义。访问令牌代表最终用户的授权,不得暴露给未经授权的各方。
[...]
5.3。用户信息端点
UserInfo 端点是一个 OAuth 2.0 受保护资源,它返回有关经过身份验证的最终用户的声明。为了获得所请求的有关最终用户的声明,客户端使用通过 OpenID Connect 身份验证获得的访问令牌向 UserInfo 端点发出请求。这些声明通常由一个 JSON 对象表示,该对象包含声明的名称和值对集合。
【讨论】:
以上是关于gitlab的private token有啥用的主要内容,如果未能解决你的问题,请参考以下文章