public OIDCProviderMetadata(dynamic o) { deserializeFromDynamic(o); if (JwksUri != null) { Keys = new List <OIDCKey>(); Dictionary <string, object> jwks = OpenIdRelyingParty.GetUrlContent(WebRequest.Create(JwksUri)); ArrayList keys = (ArrayList)jwks["keys"]; foreach (Dictionary <string, object> key in keys) { OIDCKey newKey = new OIDCKey(key); Keys.Add(newKey); } } }
public override void validate() { if (RedirectUris != null && ResponseTypes != null && RedirectUris.Count != ResponseTypes.Count) { throw new OIDCException("The redirect_uris do not match response_types."); } if (RedirectUris != null && SectorIdentifierUri != null) { List <string> siUris = new List <string>(); dynamic uris = OpenIdRelyingParty.GetUrlContent(WebRequest.Create(SectorIdentifierUri)); foreach (string uri in uris) { siUris.Add(uri); } foreach (string uri in RedirectUris) { if (!siUris.Contains(uri)) { throw new OIDCException("The sector_identifier_uri json must include URIs from the redirect_uri array."); } } } if (ResponseTypes != null && GrantTypes != null) { foreach (string responseType in ResponseTypes) { if ((responseType == "code" && !GrantTypes.Contains("authorization_code")) || (responseType == "id_token" && !GrantTypes.Contains("implicit")) || (responseType == "token" && !GrantTypes.Contains("implicit")) || (responseType == "id_token" && !GrantTypes.Contains("implicit"))) { throw new OIDCException("The response_types do not match grant_types."); } } } }