在收到访问令牌(引用访问令牌)后,我的api中间件调用安装端点以获取jwt令牌。不幸的是,我得到了一个带有错误消息unauthortize的json响应。
2016-08-24 13:33:39.505 -04:00调试开始范围验证2016-08-24 13:33:39.505 -04:00调试开始解析基本鉴权密码2016-08-24 13:33:39.505 -04:00调试解析器找到secret:"BasicAuthenticationSecretParser“2016-08-24 13:33:39.505 -04:00找到信息secret id:"webapp123.hybric.flow”2016-08-24 13:33:39.507 -04:00信息未找到同名的作用域。正在中止2016-08-24 13:33:39.507 -04:00警告范围,未授权调用自检终结点。正在中止。
看起来我们正在使用传递给instropection端点的客户端应用程序id来搜索客户端应用程序所请求的作用域。问题:
他说的对吗?Id3能记住客户端请求的作用域吗?我可以使用ClientId接口调用实例检查endpint吗?-我不想使用请求引用令牌的客户端应用程序的客户端id。
代码如下:
var作用域=(等待_scopes.FindScopesAsync(new[] { parsedSecret.Id })).FirstOrDefault();
发布于 2016-08-26 14:51:21
检查终结点用于验证令牌,而不是获取Jwt。要调用自省端点,您需要在身份验证请求中传递"Scope“和"Scope secret”,而不是客户端id。如果您将引用令牌与有效的作用域名和密码一起发送到实例检查端点,您将在响应中获得声明。
public async Task ValidateValidReferenceTokenUsingIntrospectionEndPoint()
{
var tokenResponse = await GetTokenResponseForClientCredentialsFlow(IdsModel.AccessTokenType.Reference);
var introspectionClient = new IntrospectionClient(
IntrospectionEndpoint,
"Api1", // scope name, scope secret
"Api1Secret");
var response = await introspectionClient.SendAsync(new IntrospectionRequest
{
Token = tokenResponse.AccessToken
});
var jsonResult = JsonConvert.DeserializeObject<Dictionary<string, object>>(response.Raw);
response.IsActive.Should().Be(true);
response.IsError.Should().Be(false);
jsonResult.Should().Contain("iss", ValidIssuer);
jsonResult.Should().Contain("aud", ValidAudience);
jsonResult.Should().Contain("client_id", "referenceTokenClient");
jsonResult.Should().Contain("client_claim1", "claim1value");
jsonResult.Should().Contain("active", true);
}https://stackoverflow.com/questions/39146810
复制相似问题