protected override string GetDownloadUri(IssuerConfiguration issuerConfiguration) { var downloadUri = ConfigurationStore.GetCertificateUri(); if (string.IsNullOrWhiteSpace(downloadUri)) { downloadUri = issuerConfiguration.JwksUri; } return(downloadUri); }
public ActionResult Token() { var configuration = new IssuerConfiguration { EncryptionCertificate = new X509Certificate2(Server.MapPath("~/Certs/localhost.cer")), SigningCertificate = new X509Certificate2(Server.MapPath("~/Certs/localhost.pfx"), "a") }; var authServer = new AuthorizationServer(new OAuth2Issuer(configuration)); return authServer.HandleTokenRequest(Request).AsActionResult(); }
public override string Build(string requestDirectoryPath, IssuerConfiguration issuerConfiguration, string nonce, string state) { var url = base.Build(requestDirectoryPath, issuerConfiguration, nonce, state); var hd = ConfigurationStore.GetHostedDomain(); if (!string.IsNullOrWhiteSpace(hd)) { url += $"&hd={hd}"; } return(url); }
public Task <IDictionary <string, X509Certificate2> > GetCertificatesAsync(IssuerConfiguration issuerConfiguration) { lock (funcLock) { if (certRetrieveTask != null && certificateCacheExpires > clock.GetLocalTime()) { return(certRetrieveTask); } // assume the cache is indefinite by default, and adjust back based on downloaded certificates. certificateCacheExpires = DateTime.MaxValue; certRetrieveTask = DoGetCertificateAsync(issuerConfiguration); } return(certRetrieveTask); }
public async Task <IDictionary <string, X509Certificate2> > DoGetCertificateAsync(IssuerConfiguration issuerConfiguration) { using (var client = new HttpClient()) { var downloadUri = GetDownloadUri(issuerConfiguration); var response = await client.GetAsync(downloadUri); var content = await response.Content.ReadAsStringAsync(); var downloadedCerts = certificateParser.Parse(content); return(downloadedCerts.ToDictionary(c => c.Kid, c => FromBase64String(c.Kid, c.Certificate))); } }
protected virtual string GetDownloadUri(IssuerConfiguration issuerConfiguration) { return(issuerConfiguration.JwksUri); }
public async Task <IDictionary <string, AsymmetricSecurityKey> > DoGetKeyAsync(IssuerConfiguration issuerConfiguration) { using (var client = new HttpClient()) { var downloadUri = GetDownloadUri(issuerConfiguration); var response = await client.GetAsync(downloadUri); var content = await response.Content.ReadAsStringAsync(); var downloadedKeys = keyParser.Parse(content); return(downloadedKeys.ToDictionary(c => c.Kid, ConvertDetailsToKey)); } }