正如标题所暗示的,到目前为止,我面临着一些关于使用 K6 的不记名令牌授权的“疑问”,因为我从 getAuth 方法/服务接收该令牌作为access_token ,现在我有以下内容:
getAuthtoken.js
import http from 'k6/http';
import { check, sleep } from "k6";
import * as general_data from '../utility/general.js';
import * as auth_data from '../utility/authentication.js';
export default function () {
var url = `${general_data.baseUrl}${auth_data.url}`;
var payload = JSON.stringify(auth_data.body);
const headers = {
headers: auth_data.headers,
};
const res = http.post(url, payload, headers);
check(res, {
'status was 200': r => r.status == 200,
})
console.log(res.body)
return res.json()
}
Run Code Online (Sandbox Code Playgroud)
Json 响应如下所示:
{
"access_token": "vHS9awrfrzTWxMGpAsVNWD2aSsKXkoGBZg8RgCSoQDo",
"token_type": "Bearer", …Run Code Online (Sandbox Code Playgroud) 我正在开发一个登录应用程序,在前端使用 Nextjs,在后端使用 springboot。
我能够从调用 /authenticate在 springboot 中开发的名为 loginAPI 的前端登录,并且它成功返回 。authToken登录后,我重定向到主页 ( /allcoupons) 页面。
response.data在登录中,我像这样传递令牌的值
const handleSubmit = async (e) => {
// e.preventDefault();
let requestbody = {
username: credentials.username,
password: credentials.password,
};
try {
const response = await axios({
method: "post",
headers: {},
url: "http://localhost:8081/authenticate",
data: requestbody,
});
//console.log("credentials for login = ", credentials);
//console.log("response from api = ", response);
if (response.status === 200) {
router.push(
{
pathname: "/allcoupons",
query: { auth: JSON.stringify(response.data) …Run Code Online (Sandbox Code Playgroud) 背景:我们使用 Bitbucket Server(即将升级/切换到 Bitbucket DataCenter)。在我们的身份验证设置中,我们禁用了用户密码(网络身份验证通过不同的方式进行),因此出于 Bitbucket/Git 的目的,我们使用 Bitbucket 个人访问令牌 (PAT)。(SSH 密钥身份验证在我们的组织中不是一个选项。)对于克隆/推送等,我们在提示输入凭据时一直使用我们的用户名和 PAT。这是可行的,但由于我无法了解我们的身份验证设置的原因,它正在创建与我们的自动化构建以及大型用户交互式本地构建相关的性能问题。
Bitbucket 不使用 HTTP(S) 基本身份验证,还支持 HTTP(S) 承载令牌身份验证,您只需提供 PAT,无需提供用户名。这样做可以解决我们的性能问题。对 REST API 请求执行此操作很简单。在 Git 上这样做比较棘手。此 Bitbucket 文档建议这样做:
$ git clone -c http.extraHeader='Authorization: Bearer xxxx' https://bitbucketserver.com/scm/projectname/teamsinspace.git
Run Code Online (Sandbox Code Playgroud)
这有效!但它通过命令历史记录等向其他人公开 PAT。不公开 PAT 的更安全的变体也可以使用:
$ git clone --config-env=http.extraHeader=GIT_AUTHORIZATION_HEADER https://bitbucketserver.com/scm/projectname/teamsinspace.git
Run Code Online (Sandbox Code Playgroud)
哪里。GIT_AUTHORIZATION_HEADER Authorization: Bearer xxxx但这仍然有一些缺点,即它无法使用.gitconfig并且必须添加到每个命令中,并且用户必须提前配置它并且无法提示输入安全存储在 Git 凭证中的 PAT帮手。
GitLab 提供了一个“神奇的用户名” OAuth2,可以通过基本身份验证向其提供令牌,该身份验证本质上告诉服务器“忽略用户名,仅使用令牌进行身份验证”。Bitbucket 还提供了类似的“神奇用户名” x-token-auth,但它似乎要么仅限于云,要么仅限于存储库访问令牌,或者两者兼而有之,因为我们尝试使用它,但它只会导致身份验证错误。访问这样的功能将允许我们对神奇的用户名进行硬编码.gitconfig,并且开发人员只会被提示输入“x-token-auth@our-server.com 的密码”,这将是 PAT。但是,遗憾的是,我们无法使用此功能。
大约 14 年前,Git 邮件列表上曾有一次关于支持 Bearer 令牌身份验证的讨论,甚至提出了一个补丁,但看起来并没有任何进展。理论上,我可以应用该补丁的现代化版本并重新编译 Git,但这对于我们的开发人员组织来说确实不是一个理想的解决方案。
我考虑过创建一个 …
git authentication bitbucket http-authentication bearer-token
我在 ASP.NET Core MVC 中使用 JSON Web Token (JWT) 实现身份验证时遇到问题。我有一个带有登录端点的 ASP.NET Core API,该端点返回 JWT 以响应用户登录。以下是 API 中我的登录端点的代码:
[HttpPost]
[Route("login")]
public async Task<IActionResult> Login([FromBody] LoginUserDTO userDTO)
{
// ... (omission for brevity)
return Accepted(new TokenRequest { Token = await _authManager.CreateToken(), RefreshToken = await _authManager.CreateRefreshToken() });
}
public async Task<string> CreateToken()
{
var signingCredentials = GetSigningCredentials();
var claims = await GetClaims();
var token = GenerateTokenOptions(signingCredentials, claims);
return new JwtSecurityTokenHandler().WriteToken(token);
}
private JwtSecurityToken GenerateTokenOptions(SigningCredentials signingCredentials, List<Claim> claims)
{
var jwtSettings = _configuration.GetSection("Jwt");
var …Run Code Online (Sandbox Code Playgroud) 我有一个启用了身份验证的Web API(承载令牌).这是由客户端应用程序调用的,我想保护它免受匿名使用,因此我想创建一个单独的用户并为其创建一个承载令牌.
我可以通过调用寄存器和令牌方法来创建令牌,但我想从代码中执行此操作.
据我所知,承载令牌不存储在数据库中.可以使用ASP.NET Identity API以某种方式检索它吗?
我还想从代码创建此用户并保存令牌,因为我需要将数据库部署到多个服务器.
我已经使用OWIN和bearer token实现了身份验证,当用户尝试登录时,它可以正常工作.所以我转到特殊的\ Token url并提供用户名/密码并获得此令牌作为响应.但我也有注册用户功能,理想情况下,我想在注册用户后立即获得此令牌.我可以在Web服务器内部进行\ Token,或者在客户端注册后执行\ Token,但我希望有一个解决方案,我可以做类似的事情
public Token RegisterUser(RegisterUserRequest request)
{
// Registration here
return OAuthProvider.GenerateToken(username, password)
}
Run Code Online (Sandbox Code Playgroud)
有可能做那样的事吗?
在我正在构建的应用程序中,我们使用JWT令牌作为OAuth Bearer令牌。
假设我们有一个名为的资源集合things,可通过thingID 寻址,例如。things/1,things/44等等。
当前,每当有人请求具有scope的访问令牌时things,我们都会列出用户对其具有的所有权利的所有权利的列表things:
{
"sub": "Romeo",
"scope": [ "things" ],
"things": {
"1": [ "read", "write", "delete" ],
"44": [ "read", "write"],
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,但是当用户有很多时,情况会变糟things。因为所有权限都在JWT令牌内编码,所以对于每个thing用户而言,令牌的确会变得更大。
这是不可扩展的,我需要为此找到解决方案。我可以一次将令牌的范围限定为thing一个,但是随后,用于管理的客户端的令牌管理就变成了地狱(我需要一个可以列出令牌的令牌,并且每个令牌必须保留一个令牌thing)。
我无法摆脱无记名令牌,因为我们的某些组件由于多种原因而无法与令牌发行者对话。
是否有解决此问题的标准方法?我正在考虑使令牌与things范围可互换,因此我可以将其中只有一部分的受限令牌交换things为其中有其他一部分的其他令牌things。
我是使用 Rest Assured、Java 和 Api 测试的新手,所以请对我保持温和。当我使用放心测试使用承载身份验证的 api 时,测试失败导致:- java.net.ConnectException:连接被拒绝:连接
我知道问题可能与身份验证有关,但不确定如何使用“承载”。我四处搜索并相信我需要以某种方式使用我的用户名和密码进行初始请求。然后取回令牌以用于承载身份验证。请有人用一个非常简单的例子帮助我做到这一点吗?
我的代码是
import com.jayway.restassured.RestAssured;
import static com.jayway.restassured.RestAssured.*;
import static org.hamcrest.Matchers.hasItem;
@BeforeTest
public void setUp() {
RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
RestAssured.authentication = preemptive().basic("username","password");
}
@Test
public void successfulTest() {
given()
.contentType("application/json; charset=UTF-8");
when().
get("http://mydomain/testpath/Id=2").
then().
statusCode(200);
}
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试学习如何使用持票令牌构建安全api,我不断收到此错误(InvalidOperationException:未找到名为'Bearer'的AuthorizationPolicy.)我不知道为什么.我正在使用asp.net-core 2.0并尝试使用jwt auth中间件.这是我的启动课程,任何帮助将不胜感激!
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
const string TokenAudience = "ExampleAudience";
const string TokenIssuer = "ExampleIssuer";
private RsaSecurityKey key;
private TokenAuthOptions tokenOptions;
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
var keyParams = RSAKeyUtils.GetRandomKey();
key = new RsaSecurityKey(keyParams);
tokenOptions = new TokenAuthOptions()
{
Audience = TokenAudience,
Issuer = TokenIssuer,
SigningCredentials = …Run Code Online (Sandbox Code Playgroud) 我试图搜索该问题的解决方案,但没有找到正确的搜索文本。
我的问题是,如何配置我的IdentityServer,使其也可以接受/授权带有BearerTokens的Api请求?
我已配置并正在运行IdentityServer4。我还在我的IdentityServer上配置了测试API,如下所示:
[Authorize]
[HttpGet]
public IActionResult Get()
{
return new JsonResult(from c in User.Claims select new { c.Type, c.Value });
}
Run Code Online (Sandbox Code Playgroud)
在我的startup.cs中,ConfigureServices()如下:
public IServiceProvider ConfigureServices(IServiceCollection services)
{
...
// configure identity server with stores, keys, clients and scopes
services.AddIdentityServer()
.AddCertificateFromStore(Configuration.GetSection("AuthorizationSettings"), loggerFactory.CreateLogger("Startup.ConfigureServices.AddCertificateFromStore"))
// this adds the config data from DB (clients, resources)
.AddConfigurationStore(options =>
{
options.DefaultSchema = "auth";
options.ConfigureDbContext = builder =>
{
builder.UseSqlServer(databaseSettings.MsSqlConnString,
sql => sql.MigrationsAssembly(migrationsAssembly));
};
})
// this adds the operational data from DB (codes, tokens, consents) …Run Code Online (Sandbox Code Playgroud) bearer-token ×10
c# ×5
jwt ×3
asp.net-core ×2
javascript ×2
.net ×1
api ×1
asp.net-mvc ×1
axios ×1
bitbucket ×1
git ×1
java ×1
k6 ×1
next.js ×1
oauth-2.0 ×1
owin ×1
performance ×1
postman ×1
reactjs ×1
rest-assured ×1