微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为 .NET Core 3.1/IdentityModel 5.1

如何解决为 .NET Core 3.1/IdentityModel 5.1

我正在使用 IdentityServer4。其中一部分我正在尝试使用 IdentityModel 5.1.0 构建客户端并尝试使用以下可用代码here

// request token
var tokenClient = new TokenClient(disco.TokenEndpoint,"ro.client","secret");
var tokenResponse = await tokenClient.RequestResourceOwnerPasswordAsync("alice","password","api1");

if (tokenResponse.IsError)
{
    Console.WriteLine(tokenResponse.Error);
    return;
}

Console.WriteLine(tokenResponse.Json);
Console.WriteLine("\n\n");

但这给了我以下错误

错误 CS1729:“TokenClient”不包含带 3 个参数的构造函数

从文档来看,该页面似乎仅适用于 Core 1.0。当我将文档更改为 3.1.0 时,我得到

抱歉,此页面尚不存在

这是否意味着 .NET Core 3.1 不支持 ResourceOwnerPassword 流?

解决方法

Ctrl + 单击该方法会转到其签名,您可以在其中找到该方法所需的特定参数。

浏览 repo,我发现了这个关于使用密码凭据令牌请求的片段:

var response = await _client.RequestPasswordTokenAsync(new PasswordTokenRequest
{
    ClientId = "client",UserName = "user",Password = "password",Scope = "scope",Resource = { "resource1","resource2" }
});

另一个重载:

var response = await tokenClient.RequestPasswordTokenAsync(userName: "user",password: "password",scope: "scope");

或者查看 actual method definition 或另一个 helper

一个有用的提示:流行的包通常有 a lot of tests。您可以查看它们以了解如何使用该库。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。