0

我正在玩 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 时,我得到

抱歉 此页面尚不存在

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

4

1 回答 1

1

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");

或者查看实际的方法定义或其他助手

一个有用的提示:流行的包通常有很多测试。您可以查看它们以了解如何使用该库。

于 2021-06-26T22:23:32.287 回答