IdentityServer4取消使用HTTPS问题
// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
using IdentityModel.Client;
using Newtonsoft.Json.Linq;
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace Client
{
public class Program
{
private static async Task Main()
{
// discover endpoints from metadata
var client = new HttpClient();
//var disco = await client.GetDiscoveryDocumentAsync("http://10.128.39.41:5001");
var disco = await client.GetDiscoveryDocumentAsync(new DiscoveryDocumentRequest { Address = "http://10.128.39.41:5001", Policy = new DiscoveryPolicy { RequireHttps = false } });
if (disco.IsError)
{
Console.WriteLine(disco.Error);
return;
}
// request token
var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
{
Address = disco.TokenEndpoint,
ClientId = "client",
ClientSecret = "secret",
Scope = "api1"
});
if (tokenResponse.IsError)
{
Console.WriteLine(tokenResponse.Error);
return;
}
Console.WriteLine(tokenResponse.Json);
Console.WriteLine("\n\n");
// call api
var apiClient = new HttpClient();
apiClient.SetBearerToken(tokenResponse.AccessToken);
var response = await apiClient.GetAsync("http://10.128.39.41:6001/identity");
if (!response.IsSuccessStatusCode)
{
Console.WriteLine(response.StatusCode);
}
else
{
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(JArray.Parse(content));
}
}
}
}
关键是这句:
var disco = await client.GetDiscoveryDocumentAsync(new DiscoveryDocumentRequest { Address = "http://10.128.39.41:5001", Policy = new DiscoveryPolicy { RequireHttps = false } });