IBM Liberty LDAP Filter - websphere-liberty

Hi we are encountering the same issue as per this IBM article:
http://www.ibm.com/support/knowledgecenter/en/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/tsec_was_ad_filter.html
We have users under two sub-domains (under the same top domain). Is there an IBM Liberty expert who can advise on how to properly structure the search filter so that we can get the user (see Liberty error log below).
Here is the current filter that we have:
<ldapRegistry baseDN DC=abc,DC=CORP,DC=com" bindDN=" CN=ServiceID,OU=Service Accounts,OU=Accounts,DC=abc,DC=CORP,DC=com" bindPassword="${bindPassword}" host=" abc.corp.com” id="ldap" ignoreCase="false" ldapType="Microsoft Active Directory" port =”3268" realm="BasicRealm">
<activedFilters groupFilter="(&(cn=%v)(objectcategory=group))" groupIdMap="*:cn" groupMemberIdMap="memberOf:member" userFilter="(&(objectcategory=user)(userPrincipalName=%v))" userIdMap="user:sAMAccountName">
</activedFilters>
</ldapRegistry>
Error that is seen:
com.ibm.ws.security.registry.EntryNotFoundException: CWIML4538E: The user registry operation could not be completed. More than one record exists for the XXXXXXX principal name in the configured user registries. The principal name must be unique across all the user registries.
at com.ibm.ws.security.wim.registry.util.UniqueIdBridge.getUniqueUserId(UniqueIdBridge.java:305)
at com.ibm.ws.security.wim.registry.WIMUserRegistry.getUniqueUserId(WIMUserRegistry.java:291)
at com.ibm.ws.security.authentication.jaas.modules.HashtableLoginModule.handleUserId(HashtableLoginModule.java:177)
at com.ibm.ws.security.authentication.jaas.modules.HashtableLoginModule.login(HashtableLoginModule.java:127)
at com.ibm.ws.kernel.boot.security.LoginModuleProxy.login(LoginModuleProxy.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.access$000(Unknown Source)
at javax.security.auth.login.LoginContext$4.run(Unknown Source)
at javax.security.auth.login.LoginContext$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Unknown Source)
at javax.security.auth.login.LoginContext.invokePriv(Unknown Source)
at javax.security.auth.login.LoginContext.login(Unknown Source)

As the error message indicates, the problem is caused by having multiple users with the same principalName. If you are finding unwanted users, this can generally be solved by narrowing either the baseDN of the ldap registry or by specifying a search base for the users:
<ldapEntityType name="PersonAccount">
<searchBase>ou=Users,DC=abc,DC=CORP,DC=com</searchBase>
</ldapEntityType>

Related

How to use Breakpoints in Axon Framework without having the event stream closed

I'm using the AXON Framework a multi-service java spring application.
Everytime i debugg my application and set a breakpoint (e.g. in an Eventhandler method) I recieve the folowing error after a few seconds:
org.axonframework.axonserver.connector.AxonServerException: The Event Stream has been closed, so no further events can be retrieved
at org.axonframework.axonserver.connector.event.axon.EventBuffer.peekNullable(EventBuffer.java:178) ~[axon-server-connector-4.5.2.jar:4.5.2]
at org.axonframework.axonserver.connector.event.axon.EventBuffer.hasNextAvailable(EventBuffer.java:144) ~[axon-server-connector-4.5.2.jar:4.5.2]
at org.axonframework.eventhandling.TrackingEventProcessor.processBatch(TrackingEventProcessor.java:385) ~[axon-messaging-4.5.2.jar:4.5.2]
at org.axonframework.eventhandling.TrackingEventProcessor.processingLoop(TrackingEventProcessor.java:292) ~[axon-messaging-4.5.2.jar:4.5.2]
at org.axonframework.eventhandling.TrackingEventProcessor$TrackingSegmentWorker.run(TrackingEventProcessor.java:1003) ~[axon-messaging-4.5.2.jar:4.5.2]
at org.axonframework.eventhandling.TrackingEventProcessor$WorkerLauncher.run(TrackingEventProcessor.java:1146) ~[axon-messaging-4.5.2.jar:4.5.2]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: io.grpc.StatusRuntimeException: CANCELLED: RST_STREAM closed stream. HTTP/2 error code: CANCEL
at io.grpc.Status.asRuntimeException(Status.java:535) ~[grpc-api-1.36.1.jar:1.36.1]
at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:478) ~[grpc-stub-1.36.1.jar:1.36.1]
at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:553) ~[grpc-core-1.36.1.jar:1.36.1]
at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:68) ~[grpc-core-1.36.1.jar:1.36.1]
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:739) ~[grpc-core-1.36.1.jar:1.36.1]
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:718) ~[grpc-core-1.36.1.jar:1.36.1]
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) ~[grpc-core-1.36.1.jar:1.36.1]
at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123) ~[grpc-core-1.36.1.jar:1.36.1]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
... 1 common frames omitted
Is there any configuration trick, that allows me to use breakpoints without having the event stream closed?
After a lot of try and error I was able to solve this problem with the folowing entries in the AXON-Server's properties file (.../config/axonserver.properties)
axoniq.axonserver.keep-alive-time=0
axoniq.axonserver.keep-alive-timeout=604800000
axoniq.axonserver.min-keep-alive-time=604800000
Thes way the timeout only occures afer one week. This may cause problems in a production environment, but since I use a seperated axon server on my localhost machine for testing this is no problem for me.
This article helped figuring it out: https://docs.axoniq.io/reference-guide/axon-server/administration/admin-configuration/configuration

Nifi User addition gives u null pointer exception

In the Nufi UI user addition page , i am getting
o.a.nifi.web.api.config.ThrowableMapper An unexpected error has occurred: java.lang.NullPointerException. Returning Internal Server Error response.
java.lang.NullPointerException: null
at org.apache.nifi.web.dao.impl.StandardPolicyBasedAuthorizerDAO.lambda$null$2(StandardPolicyBasedAuthorizerDAO.java:285)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1553)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
What version of NiFi are you running? I believe this was addressed here:
https://issues.apache.org/jira/browse/NIFI-6020

i want to send an email via tsend email component in talend

Hello i want to send an email via tsend email component in talend.i configured the component like this enter image description here
But its still gives me the error
Exception in component tSendMail_1 (EmailJob)
javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketException: Connection reset
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1462)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1260)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:297)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
at local_project.emailjob_0_1.EmailJob.tSendMail_1Process(EmailJob.java:967)
at local_project.emailjob_0_1.EmailJob.tFileInputProperties_1Process(EmailJob.java:705)
at local_project.emailjob_0_1.EmailJob.runJobInTOS(EmailJob.java:1253)
at local_project.emailjob_0_1.EmailJob.main(EmailJob.java:1102)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.security.ssl.InputRecord.readFully(Unknown Source)
at sun.security.ssl.InputRecord.read(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at sun.security.ssl.AppInputStream.read(Unknown Source)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:75)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1440)
... 11 more
[statistics] disconnected
Job EmailJob terminé à 17:51 14/11/2018. [Code sortie=1]
The error you are facing Connection reset means basically, that the connection has been closed by the other end. There are many articles on this. You can read.
See
send-email-using-talend for creating jobs in Talend for sending email. This should help.
Looks like its connection closed problem. Please turn off 2-step verification and Allow less secure apps on your mail account and check again.

beaconManager give me error when app back from background

I use altbeacon library in my app. Everything work Ok after start, but if i out from app she's in background i get notification on statusbar about beacons. When i click on this notification i get this error:
Process: pl.hekko.kesser.beacontest, PID: 29929
java.lang.RuntimeException: Unable to start activity ComponentInfo{pl.hekko.kesser.beacontest/pl.hekko.kesser.beacontest.MainActivity}: java.lang.UnsupportedOperationException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2202)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.add(Collections.java:928)
at pl.hekko.kesser.beacontest.MainActivity.onCreate(MainActivity.java:83)
at android.app.Activity.performCreate(Activity.java:5275)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2166)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252)
            at android.app.ActivityThread.access$800(ActivityThread.java:139)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
My MainActivity line 83:
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
I'm not sure this setBeaconLayout but seems to work fine generally.
Sometimes app doesn't start shows error, but second click on icon starts app. It seems that the same error cause this.
The problem is that you are only allowed to configure the list of active BeaconParsers once, when the library first starts up, so you get an error when you try to do it a second time. While it's easier to do this just once in the onCreate method of a custom Application, you can do this in the onCreate method of an Activity if you wrap it in an if statement like this:
// Only execute the code below if only the default BeaconParser is active
if (beaconManager.getBeaconParsers().size() == 1) {
// Put your BeaconParser setup code here
...
}

Google Data API Client Libraries with proxy

I use java and gdata API to manage my Calendar's data. But it works only if I have direct access to the Internet. In my case I have to use proxy. Is there any way to manage my Google calendar's data through the proxy?
I'v tried this way:
System.setProperty("http.proxyHost", "myproxy.mydomain.com");
System.setProperty("http.proxyPort", "3128");
URL feedUrl = new URL("http://www.google.com/calendar/feeds/....");
CalendarService myService = new CalendarService("exampleCo-exampleApp-1");
String encoded = new String(Base64.encodeBase64(new String("proxy_user:proxy_password").getBytes()));
String base64encodedCredentials = "Basic " + encoded;
myService.getRequestFactory().setPrivateHeader("Proxy-Authorization", base64encodedCredentials);
//!!! Exception in this line
myService.setUserCredentials("my_google_accaunt#gmail.com", "my_google_password");
Exception:
Exception in thread "main" com.google.gdata.util.AuthenticationException: Error connecting with login URI
at com.google.gdata.client.GoogleAuthTokenFactory.getAuthToken(GoogleAuthTokenFactory.java:549)
at com.google.gdata.client.GoogleAuthTokenFactory.setUserCredentials(GoogleAuthTokenFactory.java:397)
at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:364)
at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:319)
at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:303)
at calendartest.CalendarTest.getCalendarEventsWithProxy(CalendarTest.java:145)
at calendartest.CalendarTest.main(CalendarTest.java:195)
Caused by: java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
Without proxy everything works.
You didn't say what language you're using but instructions for Java and .Net# are at:
https://developers.google.com/gdata/articles/proxy_setup
instructions for Python can be found at:
http://code.google.com/p/gdatacopier/wiki/ProxySupport (these should work for any app using the gdata-python-client)

Resources