2017-08-31 58 views
0

我已經在HDP沙箱上啓用了演示LDAP(可與Knox服務一起使用),並嘗試使用它來配置Nifi身份驗證。我配置了幾個xml文件,但沒有在nifi-app.logs中看到任何異常。它不會在訪問時提示我輸入用戶名/密碼。在HDP沙盒上對Nifi進行LDAP身份驗證

vim /opt/nifi/current/conf/login-identity-providers.xml 
<loginIdentityProviders> 
<provider> 
<identifier>ldap-provider</identifier> 
<class>org.apache.nifi.ldap.LdapProvider</class> 
<property name="Authentication Strategy">SIMPLE</property> 
<property name="Manager DN">uid=guest,ou=people,dc=hadoop,dc=apache,dc=org</property> 
<property name="Manager Password">guest-password</property> 
<property name="Referral Strategy">FOLLOW</property> 
<property name="Connect Timeout">10 secs</property> 
<property name="Read Timeout">10 secs</property> 
<property name="Url">ldap://localhost:33389</property> 
<property name="User Search Base">ou=people,dc=hadoop,dc=apache,dc=org</property> 
<property name="User Search Filter">uid={0}</property> 
<property name="Authentication Expiration">12 hours</property> 
</provider> 
</loginIdentityProviders> 

Authorizer.xml

vim /opt/nifi/current/conf/authorizers.xml 

<authorizer> 
     <identifier>file-provider</identifier> 
     <class>org.apache.nifi.authorization.FileAuthorizer</class> 
     <property name="Authorizations File">/opt/nifi/current/conf/authorizations.xml</property> 
     <property name="Users File">/opt/nifi/current/conf/users.xml</property> 
     <property name="Initial Admin Identity">uid=guest,ou=people,dc=hadoop,dc=apache,dc=org</property> 
     <property name="Legacy Authorized Users File"></property> 

     <!-- Provide the identity (typically a DN) of each node when clustered, see above description of Node Identity. 
     <property name="Node Identity 1"></property> 
     <property name="Node Identity 2"></property> 
     --> 
    </authorizer> 

nifi.properties

# Core Properties # 
nifi.version=1.0.0 
nifi.flow.configuration.file=/opt/nifi/data/conf/flow.xml.gz 
nifi.flow.configuration.archive.enabled=true 
nifi.flow.configuration.archive.dir=/opt/nifi/data/conf/archive/ 
nifi.flow.configuration.archive.max.time=30 days 
nifi.flow.configuration.archive.max.storage=500 MB 
nifi.flowcontroller.autoResumeState=true 
nifi.flowcontroller.graceful.shutdown.period=10 sec 
nifi.flowservice.writedelay.interval=500 ms 
nifi.administrative.yield.duration=30 sec 
# If a component has no work to do (is "bored"), how long should we wait before checking again for work? 
nifi.bored.yield.duration=10 millis 

nifi.authorizer.configuration.file=/opt/nifi/current/conf/authorizers.xml 
nifi.login.identity.provider.configuration.file=/opt/nifi/current/conf/login-identity-providers.xml 
nifi.templates.directory=/opt/nifi/data/conf/templates 
nifi.ui.banner.text= 
nifi.ui.autorefresh.interval=30 sec 
nifi.nar.library.directory=./lib 
nifi.nar.working.directory=./work/nar/ 
nifi.documentation.working.directory=./work/docs/components 

#################### 
# State Management # 
#################### 
nifi.state.management.configuration.file=./conf/state-management.xml 
# The ID of the local state provider 
nifi.state.management.provider.local=local-provider 
# The ID of the cluster-wide state provider. This will be ignored if NiFi is not clustered but must be populated if running in a cluster. 
nifi.state.management.provider.cluster=zk-provider 
# Specifies whether or not this instance of NiFi should run an embedded ZooKeeper server 
nifi.state.management.embedded.zookeeper.start=false 
# Properties file that provides the ZooKeeper properties to use if <nifi.state.management.embedded.zookeeper.start> is set to true 
nifi.state.management.embedded.zookeeper.properties=./conf/zookeeper.properties 


# H2 Settings 
nifi.database.directory=./database_repository 
nifi.h2.url.append=;LOCK_TIMEOUT=25000;WRITE_DELAY=0;AUTO_SERVER=FALSE 

# FlowFile Repository 
nifi.flowfile.repository.implementation=org.apache.nifi.controller.repository.WriteAheadFlowFileRepository 
nifi.flowfile.repository.directory=/opt/nifi/data/flowfile_repository 
nifi.flowfile.repository.partitions=256 
nifi.flowfile.repository.checkpoint.interval=2 mins 
nifi.flowfile.repository.always.sync=false 

nifi.swap.manager.implementation=org.apache.nifi.controller.FileSystemSwapManager 
nifi.queue.swap.threshold=20000 
nifi.swap.in.period=5 sec 
nifi.swap.in.threads=1 
nifi.swap.out.period=5 sec 
nifi.swap.out.threads=4 

# Content Repository 
nifi.content.repository.implementation=org.apache.nifi.controller.repository.FileSystemRepository 
nifi.content.claim.max.appendable.size=10 MB 
nifi.content.claim.max.flow.files=100 
nifi.content.repository.directory.default=/opt/nifi/data/content_repository 
nifi.content.repository.archive.max.retention.period=12 hours 
nifi.content.repository.archive.max.usage.percentage=50% 
nifi.content.repository.archive.enabled=false 
nifi.content.repository.always.sync=false 
nifi.content.viewer.url=/nifi-content-viewer/ 

# Provenance Repository Properties 
nifi.provenance.repository.implementation=com.thinkbiganalytics.nifi.provenance.repo.KyloPersistentProvenanceEventRepository 

# Persistent Provenance Repository Properties 
nifi.provenance.repository.directory.default=/opt/nifi/data/provenance_repository 
nifi.provenance.repository.max.storage.time=24 hours 
nifi.provenance.repository.max.storage.size=1 GB 
nifi.provenance.repository.rollover.time=30 secs 
nifi.provenance.repository.rollover.size=100 MB 
nifi.provenance.repository.query.threads=2 
nifi.provenance.repository.index.threads=1 
nifi.provenance.repository.compress.on.rollover=true 
nifi.provenance.repository.always.sync=false 
nifi.provenance.repository.journal.count=16 
# Comma-separated list of fields. Fields that are not indexed will not be searchable. Valid fields are: 
# EventType, FlowFileUUID, Filename, TransitURI, ProcessorID, AlternateIdentifierURI, Relationship, Details 
nifi.provenance.repository.indexed.fields=EventType, FlowFileUUID, Filename, ProcessorID, Relationship 
# FlowFile Attributes that should be indexed and made searchable. Some examples to consider are filename, uuid, mime.type 
nifi.provenance.repository.indexed.attributes= 
# Large values for the shard size will result in more Java heap usage when searching the Provenance Repository 
# but should provide better performance 
nifi.provenance.repository.index.shard.size=500 MB 
# Indicates the maximum length that a FlowFile attribute can be when retrieving a Provenance Event from 
# the repository. If the length of any attribute exceeds this value, it will be truncated when the event is retrieved. 
nifi.provenance.repository.max.attribute.length=65536 

# Volatile Provenance Respository Properties 
nifi.provenance.repository.buffer.size=100000 

# Component Status Repository 
nifi.components.status.repository.implementation=org.apache.nifi.controller.status.history.VolatileComponentStatusRepository 
nifi.components.status.repository.buffer.size=1440 
nifi.components.status.snapshot.frequency=1 min 

# Site to Site properties 
nifi.remote.input.host= 
nifi.remote.input.secure=false 
nifi.remote.input.socket.port= 
nifi.remote.input.http.enabled=true 
nifi.remote.input.http.transaction.ttl=30 sec 

# web properties # 
nifi.web.war.directory=./lib 
nifi.web.http.host= 
nifi.web.http.port=8079 
nifi.web.https.host= 
nifi.web.https.port= 
nifi.web.jetty.working.directory=./work/jetty 
nifi.web.jetty.threads=200 

# security properties # 
nifi.sensitive.props.key= 
nifi.sensitive.props.key.protected= 
nifi.sensitive.props.algorithm=PBEWITHMD5AND256BITAES-CBC-OPENSSL 
nifi.sensitive.props.provider=BC 
nifi.sensitive.props.additional.keys= 

nifi.security.keystore= 
nifi.security.keystoreType= 
nifi.security.keystorePasswd= 
nifi.security.keyPasswd= 
nifi.security.truststore= 
nifi.security.truststoreType= 
nifi.security.truststorePasswd= 
nifi.security.needClientAuth= 
nifi.security.user.authorizer=file-provider 
nifi.security.user.login.identity.provider=ldap-provider 
nifi.security.ocsp.responder.url= 
nifi.security.ocsp.responder.certificate= 

# Identity Mapping Properties # 
# These properties allow normalizing user identities such that identities coming from different identity providers 
# (certificates, LDAP, Kerberos) can be treated the same internally in NiFi. The following example demonstrates normalizing 
# DNs from certificates and principals from Kerberos into a common identity string: 
# 
# nifi.security.identity.mapping.pattern.dn=^CN=(.*?), OU=(.*?), O=(.*?), L=(.*?), ST=(.*?), C=(.*?)$ 
# [email protected]$2 
# nifi.security.identity.mapping.pattern.kerb=^(.*?)/[email protected](.*?)$ 
# [email protected]$2 

# cluster common properties (all nodes must have same values) # 
nifi.cluster.protocol.heartbeat.interval=5 sec 
nifi.cluster.protocol.is.secure=false 

# cluster node properties (only configure for cluster nodes) # 
nifi.cluster.is.node=false 
nifi.cluster.node.address= 
nifi.cluster.node.protocol.port= 
nifi.cluster.node.protocol.threads=10 
nifi.cluster.node.event.history.size=25 
nifi.cluster.node.connection.timeout=5 sec 
nifi.cluster.node.read.timeout=5 sec 
nifi.cluster.firewall.file= 

# zookeeper properties, used for cluster management # 
nifi.zookeeper.connect.string= 
nifi.zookeeper.connect.timeout=3 secs 
nifi.zookeeper.session.timeout=3 secs 
nifi.zookeeper.root.node=/nifi 

# kerberos # 
nifi.kerberos.krb5.file= 

# kerberos service principle # 
nifi.kerberos.service.principal= 
nifi.kerberos.service.keytab.location= 

# kerberos spnego principle # 
nifi.kerberos.spnego.principal= 
nifi.kerberos.spnego.keytab.location= 
nifi.kerberos.spnego.authentication.expiration=12 hours 

# external properties files for variable registry 
# supports a comma delimited list of file locations 
nifi.variable.registry.properties= 

對問題的任何想法?配置中缺少任何東西?

回答

2

Apache NiFi僅在配置爲通過HTTPS運行時才執行用戶身份驗證和授權(由於HTTP請求可能被攔截,欺騙,受到攻擊等因素而做出設計決定)。請參閱User AuthenticationSecurity Configuration以設置該值(關於從Bryan Bende配置此值,這裏是一個很好的step-by-step tutorial)。

+0

謝謝@安迪。我啓用了SSL,它工作。 – Shashi