Что заменило RequestResourceOwnerPasswordAsync в IdentityModel v.4.3.0?

Я пытаюсь получить информацию о владельце ресурса, но метод RequestResourceOwnerPasswordAsync недоступен в классе TokenClient в версии 4.3.0. Я искал документацию, но не нашел замены этому методу. Вот мой код:

3 ответа

Решение

Ты можешь использовать RequestPasswordTokenAsync: Отправляет запрос токена с использованием типа предоставления пароля.

Я считаю, что рекомендуемый способ - использовать HttpClientFactory:

//private readonly IHttpClientFactory _httpClientFactory;

var client = _httpClientFactory.CreateClient();
var disco = await client.GetDiscoveryDocumentAsync("http://localhost:5000");

if (disco.IsError) throw new Exception(disco.Error);

var tokenClient = _httpClientFactory.CreateClient();

var tokenResult = tokenClient.RequestPasswordTokenAsync(new PasswordTokenRequest
    {
        Address = disco.TokenEndpoint,
        ClientId = "ro.client",
        ClientSecret = "secret",
        UserName = "alice",
        Password = "alice"
    });

Как указано в другом ответе, вы также можете использовать TokenClient - RequestPasswordTokenAsync. Или используйте как расширение дляHttpClient. Вот ссылка на документацию: https://identitymodel.readthedocs.io/en/latest/client/token.html

Это то, что я использовал, и это работает.

      using IdentityModel.Client;
using Microsoft.Extensions.Configuration;
using System.Net.Http;


var tokenClient = new HttpClient();

var tokenResult = await tokenClient.RequestPasswordTokenAsync(new PasswordTokenRequest
{
    Address = _discoveryDocument.TokenEndpoint,
    ClientId = "ro.client",
    ClientSecret = "secret",
    UserName = "Vivek",
    Password = "Vivek"
});
return tokenResult;

Возможно, вам придется подумать о добавлении некоторых или всех следующих пакетов nuget. Мой файл csproj выглядит следующим образом.

      <PackageReference Include="IdentityModel" Version="5.2.0" />
<PackageReference Include="IdentityServer4.Storage" Version="4.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
Другие вопросы по тегам