【发布时间】:2019-04-08 04:48:04
【问题描述】:
我正在执行以下 C# 魔术并读取在 jwt.io 中获得的令牌。一切看起来都很棒。
DiscoveryResponse vasco = DiscoveryClient.GetAsync("http://localhost:5100").Result;
string tokenUri = vasco.TokenEndpoint;
TokenClient client = new TokenClient(vasco.TokenEndpoint, "Blopp", "SuperSecret");
TokenResponse cred = client.RequestClientCredentialsAsync("secured_api").Result;
string token = cred.AccessToken ?? "none!";
但是,它似乎不是完全正常运行的,因为当使用键 Authorization 和值 Bearer + token (手动添加的前缀)粘贴到 Postman 中时,我进入无法访问的服务(如this question 中所述)。
在端点 http://localhost:5100/connect/token 和 Postman 的基于 OAuth 2.0 的向导上使用相同的凭据,生成一个有效的令牌。
我的结论是,我不知何故没有使用我的代码获取正确的令牌(并且由于无知而未能意识到),或者我获取的令牌丢失了一些东西。
如何获取正确的令牌,完整且完全等同于 Postman 在上述 URL 中获得的令牌?
【问题讨论】:
-
如果令牌不正确,您应该得到
unauthorized响应。根据另一个问题,您可以检查您的网站是否使用https或http。当站点实际上在http上时使用https通常会导致Could not get any response错误。 -
@SimplyGed 如问题所述 - 令牌正确且经过验证。我尝试了 HTTP 和 HTTPS——那里的结果相同。无论如何,我很确定它与令牌有关,但我不知道如何。我有某种感觉,当我获取令牌字符串时,非法字符正在被复制(并且 JWT.io 将它们过滤掉)......
标签: c# asp.net-core jwt postman identityserver4