Что заменило RequestResourceOwnerPasswordAsync в IdentityModel v.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" />