Dobrý den,
řeším problém, který se mi zdál jednoduchý, ale už si nevím rady. Různá diskuzní fóra si protiřečí a zaměňují se na nich i pojmy.
Co bych potřeboval: Pomocí .NET třídy HttpClient a její metody GetAsync(...) si potřebuju získat Bearer token z URL (autorita), abych měl autorizovaná volání Web API. Používám OAuth2 Implicit flow.
Co funguje:
var handler = new HttpClientHandler { Credentials = CredentialCache.DefaultCredentials };
using (var client = new HttpClient(handler) {Timeout = TimeSpan.FromMinutes(10)})
{
...
...
var response = await client.GetAsync(...);
...
Ve hře je ještě redirectUri, kde ten token úspěšně vyčtu. 200 OK.
Problém mám s tím, že nechci použít CredentialCache.DefaultCredentials, protože kód má být v knihovně a ten kdo jí používá si sám má říct username a password v rámci naší firemní domény. K tomu slouží NetworkCredential třída. Můžu jí použít následovně - použiju stejného uživatele.
var credentials = new NetworkCredential("*user*", "*pwd*", "*domain*");
var handler = new HttpClientHandler { Credentials = credentials };
Všechno ostatní zůstává. Toto už ovšem vyhodí 401 Unauthorized. Důležitou informací může být, že součástí headeru odpovědi je "WWW-Authenticate: Negotiation" a "NTLM".
Něco nevím, nebo jsem to nebyl schopen vygooglovat.
Poradí mi někdo ?