protected override Properties GetConfiguration(string configPrefix, FilterConfig filterConfig) { Properties props = new Properties(); Configuration conf = KMSWebApp.GetConfiguration(); foreach (KeyValuePair <string, string> entry in conf) { string name = entry.Key; if (name.StartsWith(ConfigPrefix)) { string value = conf.Get(name); name = Runtime.Substring(name, ConfigPrefix.Length); props.SetProperty(name, value); } } string authType = props.GetProperty(AuthType); if (authType.Equals(PseudoAuthenticationHandler.Type)) { props.SetProperty(AuthType, typeof(PseudoDelegationTokenAuthenticationHandler).FullName ); } else { if (authType.Equals(KerberosAuthenticationHandler.Type)) { props.SetProperty(AuthType, typeof(KerberosDelegationTokenAuthenticationHandler). FullName); } } props.SetProperty(DelegationTokenAuthenticationHandler.TokenKind, KMSClientProvider .TokenKind); return(props); }
protected override Configuration GetProxyuserConfiguration(FilterConfig filterConfig ) { IDictionary <string, string> proxyuserConf = KMSWebApp.GetConfiguration().GetValByRegex ("hadoop\\.kms\\.proxyuser\\."); Configuration conf = new Configuration(false); foreach (KeyValuePair <string, string> entry in proxyuserConf) { conf.Set(Runtime.Substring(entry.Key, "hadoop.kms.".Length), entry.Value); } return(conf); }
public virtual Response CreateKey(IDictionary jsonKey) { KMSWebApp.GetAdminCallsMeter().Mark(); UserGroupInformation user = HttpUserGroupInformation.Get(); string name = (string)jsonKey[KMSRESTConstants.NameField]; KMSClientProvider.CheckNotEmpty(name, KMSRESTConstants.NameField); AssertAccess(KMSACLs.Type.Create, user, KMS.KMSOp.CreateKey, name); string cipher = (string)jsonKey[KMSRESTConstants.CipherField]; string material = (string)jsonKey[KMSRESTConstants.MaterialField]; int length = (jsonKey.Contains(KMSRESTConstants.LengthField)) ? (int)jsonKey[KMSRESTConstants .LengthField] : 0; string description = (string)jsonKey[KMSRESTConstants.DescriptionField]; IDictionary <string, string> attributes = (IDictionary <string, string>)jsonKey[KMSRESTConstants .AttributesField]; if (material != null) { AssertAccess(KMSACLs.Type.SetKeyMaterial, user, KMS.KMSOp.CreateKey, name); } KeyProvider.Options options = new KeyProvider.Options(KMSWebApp.GetConfiguration( )); if (cipher != null) { options.SetCipher(cipher); } if (length != 0) { options.SetBitLength(length); } options.SetDescription(description); options.SetAttributes(attributes); KeyProvider.KeyVersion keyVersion = user.DoAs(new _PrivilegedExceptionAction_132( this, material, name, options)); kmsAudit.Ok(user, KMS.KMSOp.CreateKey, name, "UserProvidedMaterial:" + (material != null) + " Description:" + description); if (!KMSWebApp.GetACLs().HasAccess(KMSACLs.Type.Get, user)) { keyVersion = RemoveKeyMaterial(keyVersion); } IDictionary json = KMSServerJSONUtils.ToJSON(keyVersion); string requestURL = KMSMDCFilter.GetURL(); int idx = requestURL.LastIndexOf(KMSRESTConstants.KeysResource); requestURL = Runtime.Substring(requestURL, 0, idx); string keyURL = requestURL + KMSRESTConstants.KeyResource + "/" + name; return(Response.Created(GetKeyURI(name)).Type(MediaType.ApplicationJson).Header("Location" , keyURL).Entity(json).Build()); }