使用者認證
NiFi支援通過用戶端證書,使用者名/密碼,Apache Knox或 OpenId Connect 進行使用者身份驗證。 使用者名/密碼驗證由“登入身份提供程式”執行。登入身份提供程式是用于通過使用者名/密碼對使用者進行身份驗證的可插入機制。在nifi.properties檔案中配置了要使用的登入身份提供程式。目前,NiFi為 輕量級目錄通路協定(LDAP) 和 Kerberos 提供了帶有登入身份提供程式選項的使用者名/密碼。 該nifi.login.identity.provider.configuration.file屬性指定登入身份提供程式的配置檔案。預設情況下,此屬性設定為./conf/login-identity-providers.xml。 該nifi.security.user.login.identity.provider屬性訓示應使用哪個已配置的登入身份提供程式。預設情況下,未配置此屬性,這意味着必須顯式啟用使用者名/密碼。 在OpenId Connect身份驗證期間,NiFi會在傳回NiFi之前将使用者重定向到提供程式登入。然後NiFi将調用提供程式來獲得使用者身份。 在Apache Knox身份驗證期間,NiFi将重定向使用者以使用Apache Knox登入,然後再傳回NiFi。NiFi将在身份驗證過程中驗證Apache Knox令牌。

NiFi隻能在指定時間内為OpenId Connect或Apache Knox配置使用者名/密碼。它不支援同時運作每個。如果未配置,則NiFi将需要用戶端證書來通過HTTPS對使用者進行身份驗證。
除非将使用者設定為nifi.security.allow.anonymous,否則使用者無法使用NiFi的安全執行個體進行匿名身份驗證。身份驗證設定為true。在這種情況下,NiFi還必須配置有支援對匿名使用者進行授權的授權器。目前,NiFi尚未随附任何支援此功能的授權者。這裡有一個功能要求來幫助支援它(NIFI-2730)。
設定nifi.security.allow.anonymous.authentication時需要考慮三種情況。當使用者直接調用沒有嘗試身份驗證的端點時,nifi.security.allow.anonymous.authentication它将控制請求是通過身份驗證還是被拒絕。其他兩種情況是請求被代理時。這可以由NiFi節點(例如NiFi群集中的節點)代理,也可以由一個單獨的代理代理一個匿名使用者的請求。在這些代理方案中,nifi.security.allow.anonymous.authentication将控制請求是通過身份驗證還是拒絕。在所有這三種情況下,如果對請求進行了身份驗證,則随後将根據請求的資源對它進行正常授權。

NiFi不會通過HTTP執行使用者身份驗證。使用HTTP,将為所有使用者授予所有角色。
輕量級目錄通路協定(LDAP)
以下是配置與目錄伺服器內建以驗證使用者身份的登入辨別提供程式的示例和說明。
在nifi.properties中設定以下内容以啟用LDAP使用者名/密碼身份驗證:
nifi.security.user.login.identity.provider = ldap-provider
修改login-identity-providers.xml以啟用ldap-provider。這是檔案中提供的示例:
ldap-provider具有以下特性:
屬性名稱 | 描述 |
Authentication Strategy | 如何驗證與LDAP伺服器的連接配接。可能的值是ANONYMOUS,SIMPLE,LDAPS,或START_TLS。 |
Manager DN | 用于綁定到LDAP伺服器以搜尋使用者的管理器的DN。 |
Manager Password | 用于綁定到LDAP伺服器以搜尋使用者的管理器的密碼。 |
TLS - Keystore | 使用LDAPS或START_TLS連接配接到LDAP時使用的密鑰庫的路徑。 |
TLS - Keystore Password | 使用LDAPS或START_TLS連接配接到LDAP時使用的密鑰庫的密碼。 |
TLS - Keystore Type | 使用LDAPS或START_TLS(即JKS或PKCS12)連接配接到LDAP時使用的密鑰庫的類型。 |
TLS - Truststore | 使用LDAPS或START_TLS連接配接到LDAP時使用的信任庫的路徑。 |
TLS - Truststore Password | 使用LDAPS或START_TLS連接配接到LDAP時使用的信任庫的密碼。 |
TLS - Truststore Type | 使用LDAPS或START_TLS(即JKS或PKCS12)連接配接到LDAP時使用的信任庫的類型。 |
TLS - Client Auth | 使用LDAPS或START_TLS連接配接到LDAP時的用戶端身份驗證政策。可能的值是REQUIRED,WANT,NONE。 |
TLS - Protocol | 使用LDAPS或START_TLS連接配接到LDAP時使用的協定。(即TLS,TLSv1.1,TLSv1.2,等等)。 |
TLS - Shutdown Gracefully | 指定在關閉目标上下文之前是否應正常關閉TLS。預設為false。 |
Referral Strategy | 處理推薦的政策。可能的值是FOLLOW,IGNORE,THROW。 |
Connect Timeout | 連接配接逾時的持續時間。(即10 secs)。 |
Read Timeout | 讀取逾時時間。(即10 secs)。 |
Url | LDAP伺服器URL的以空格分隔的清單(即ldap://:)。 |
User Search Base | 用于搜尋使用者(即CN=Users,DC=example,DC=com)的基本DN 。 |
User Search Filter | 篩選以根據搜尋使用者User Search Base。(即sAMAccountName={0})。使用者指定的名稱将插入到“ {0}”中。 |
Identity Strategy | 識别使用者的政策。可能的值為USE_DN和USE_USERNAME。如果缺少此屬性,則預設功能是USE_DN,以保持向後相容性。USE_DN盡可能使用使用者條目的完整DN。USE_USERNAME将使用使用者登入時使用的使用者名。 |
Authentication Expiration | 使用者身份驗證有效的持續時間。如果使用者從不登出,則将要求他們在此期限後重新登入。 |

為了使nifi.properties和login-identity-providers.xml的更改生效,需要重新開機NiFi。如果NiFi是群集的,則所有節點上的配置檔案必須相同。
Kerberos
以下是配置與Kerberos密鑰分發中心(KDC)內建以驗證使用者身份的登入身份提供程式的示例和說明。
在nifi.properties中設定以下内容以啟用Kerberos使用者名/密碼身份驗證:
nifi.security.user.login.identity.provider = kerberos-provider
修改login-identity-providers.xml以啟用kerberos-provider。這是檔案中提供的示例:
将kerberos-provider具有以下特性:
屬性名稱 | 描述 |
Default Realm | 使用者輸入不完整的使用者主體(即NIFI.APACHE.ORG)時提供的預設領域。 |
Authentication Expiration | 使用者身份驗證有效的持續時間。如果使用者從未登出,則将要求他們在此期限後重新登入。 |
另請參見Kerberos服務,以允許通過用戶端Kerberos票證進行單點登入通路。

為了使nifi.properties和login-identity-providers.xml的更改生效,需要重新開機NiFi。如果NiFi是群集的,則所有節點上的配置檔案必須相同。
OpenId Connect
要通過OpenId Connect啟用身份驗證,必須在nifi.properties中配置以下屬性。
屬性名稱 | 描述 |
nifi.security.user.oidc.discovery.url | 發現URL對所需的OpenId Connect Provider(http://openid.net/specs/openid-connect-discovery-1_0.html)。 |
nifi.security.user.oidc.connect.timeout | 與OpenId Connect提供程式進行通信時,連接配接逾時。 |
nifi.security.user.oidc.read.timeout | 與OpenId Connect提供程式通信時讀取逾時。 |
nifi.security.user.oidc.client.id | 向OpenId Connect提供商注冊後,NiFi的用戶端ID。 |
nifi.security.user.oidc.client.secret | 向OpenId Connect提供商注冊後,NiFi的用戶端密碼。 |
nifi.security.user.oidc.preferred.jwsalgorithm | 驗證辨別符的首選算法。如果該值為空,則預設情況下,RS256OpenId Connect Provider将根據規範支援該值。如果這個值HS256,HS384或者HS512,NiFi将嘗試驗證HMAC使用指定的用戶端機密保護令牌。如果該值為none,則NiFi會嘗試驗證不安全/普通的令牌。此算法的其他值将嘗試解析為RSA或EC算法,與通過發現URL找到的中繼資料中的jwks_uri提供的JSON Web密鑰(JWK)結合使用。 |
nifi.security.user.oidc.additional.scopes | 逗号分隔的範圍,除了OpenId和電子郵件外,還發送給OpenId連接配接提供程式。 |
nifi.security.user.oidc.claim.identifying.user | 識别要登入的使用者的聲明;預設是電子郵件。使用前可能需要通過nifi.security.user.oidc.additional.scopes。 |
Apache Knox
要通過Apache Knox啟用身份驗證,必須在nifi.properties中配置以下屬性。
屬性名稱 | 描述 |
nifi.security.user.knox.url | Apache Knox登入頁面的URL。 |
nifi.security.user.knox.publicKey | Apache Knox公鑰的路徑,該路徑将用于驗證HTTP Cookie中身份驗證令牌的簽名。 |
nifi.security.user.knox.cookieName | 成功登入後,Apache Knox将生成的HTTP Cookie的名稱。 |
nifi.security.user.knox.audiences | 可選的。以逗号分隔的允許通路者清單。如果設定,令牌中的閱聽人必須出現在此清單中。在令牌中填充的閱聽人可以在Knox中配置。 |