首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用引用令牌时的IdentityServer3 - ScopeSecretValidator

使用引用令牌时的IdentityServer3 - ScopeSecretValidator
EN

Stack Overflow用户
提问于 2016-08-25 21:34:06
回答 1查看 323关注 0票数 0

在收到访问令牌(引用访问令牌)后,我的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();

EN

回答 1

Stack Overflow用户

发布于 2016-08-26 14:51:21

检查终结点用于验证令牌,而不是获取Jwt。要调用自省端点,您需要在身份验证请求中传递"Scope“和"Scope secret”,而不是客户端id。如果您将引用令牌与有效的作用域名和密码一起发送到实例检查端点,您将在响应中获得声明。

代码语言:javascript
复制
 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);
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39146810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档