-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathProgram.cs
72 lines (64 loc) · 2.12 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using System.Threading.Tasks;
using Http.Diagnostic;
using IdentityModel.Client;
namespace ResourceOwnerPasswordCredentials
{
class Program
{
private static HttpClient httpClient = new HttpClient();
public static async Task Main()
{
DiagnosticListener.AllListeners.Subscribe(new HttpDiagnosticListenerObserver());
await MainAsync();
Console.WriteLine("ok");
Console.ReadKey();
}
private static async Task MainAsync()
{
var tokenResponse = await GetTokenAsync();
httpClient.SetBearerToken(tokenResponse.AccessToken);
var apis = new List<string>
{
"http://oauth2-resources-aspnetcore.test",
"http://oauth2-resources-aspnetcore.test/books",
"http://oauth2-resources-nodejs.test",
"http://oauth2-resources-java.test",
"http://oauth2-resources-owin.test"
};
foreach (var api in apis)
{
try
{
await httpClient.GetAsync(api);
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
private static async Task<TokenResponse> GetTokenAsync()
{
var discoveryResponse = await httpClient.GetDiscoveryDocumentAsync(new DiscoveryDocumentRequest
{
Address = "http://oidc-server.test",
Policy = new DiscoveryPolicy
{
RequireHttps = false
}
});
return await httpClient.RequestPasswordTokenAsync(new PasswordTokenRequest
{
Address = discoveryResponse.TokenEndpoint,
ClientId = "resource-owner-password-credentials-client",
UserName = "lnh",
Password = "123",
Scope = "api-1 api-2 api-3"
});
}
}
}