首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么SerializeTicket()返回具有该资源允许客户端的所有作用域的令牌

为什么SerializeTicket()返回具有该资源允许客户端的所有作用域的令牌
EN

Stack Overflow用户
提问于 2019-06-18 13:58:43
回答 1查看 92关注 0票数 0

使用AspNet 4.6.2生成访问令牌,使用任何身份验证流(尝试过代码流、隐式流、客户端凭据流),使用Microsoft.Owin.Security.InfrastructureAuthenticationTokenCreateContext类,我观察到了一些奇怪的行为。

我们已经实现了一个Auth服务器,其中的资源可以允许客户端请求特定的作用域,但是,令牌总是与客户端能够从该资源请求的所有作用域一起返回。

相关代码为:

代码语言:javascript
运行
复制
var accessTicket = new AuthenticationTicket(new ClaimsIdentity(identity), new AuthenticationProperties());

accessTicket.Properties.SetTicketType("access_token");
accessTicket.Properties.IssuedUtc = nowUtc;
accessTicket.Properties.SetNotBeforeUtc(nowUtc);
accessTicket.Properties.ExpiresUtc = nowUtc.Add(Options.AccessTokenLifetime);
accessTicket.Properties.SetClientId(clientId);
accessTicket.Properties.SetResource(resource);
accessTicket.Properties.SetTokenId(Guid.NewGuid().ToString());
accessTicket.Properties.SetScope(scope);

var accessTokenCreateContext = new AuthenticationTokenCreateContext(Context, Options.AccessTokenFormat, accessTicket);

await Options.AccessTokenProvider.CreateAsync(accessTokenCreateContext);

var accessToken = accessTokenCreateContext.Token;

if (string.IsNullOrEmpty(accessToken))
{
    accessToken = accessTokenCreateContext.SerializeTicket();
}

一旦创建,accessTokenCreateContext.Ticket.Properties.GetScope()将返回预期的作用域,但是一旦通过SerializeTicket()方法创建了(JWT) accessToken,令牌就拥有了客户端能够从资源请求的所有作用域。

为什么此方法使用不在票证中的作用域序列化票证?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-21 09:15:24

这仅仅是对我的IDE的误解。我没有意识到VisualStudio没有步入某些方法,我认为这是理所当然的,因为我看到它步入了其他方法。

给我的教训:需要学会更好地使用我的工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56642548

复制
相关文章

相似问题

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