Using System credentials in a CPIP connector

Does anyone know how to use the system credentials in a CPIP connector?

Whe have a number of systems on campus including luminis that use the same credentials. I would like to create a connector that uses the luminis credentials to log into these external systems. I'm hoping that I do not need to create secret store entries for each connector that I want to build. Has anyone done this?

Thanks

DAVE

0
No votes yet

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

one trick

Hi,
it's not all you need but this I discovered last week can help.
using generic connector with username ${_CPUSERNAME} rather than
${_USERNAME} means you don't need to do the cptool set user xyz ExterrnalAccount ... for each user. Maybe someone can improve on this.
R.

Here is something that would help

If you guys would like use credentials that user has logged into Luminis for CPIP authentication, here are the steps you need to do

1. Change XML configuration file and change USERNAME macro to CPUSERNAME that will send Luminis user id.

2. Execute command cptool sync password for the external system you are working on.

3. You will need to execute following command for all users
cptool set user username ExternalAccount='cpipname||'

As long as you have these options set your Luminis userid and password will be passed to External application.

Hope that helps.

Connector Setup

I don't believe you need Step 3 with this procedure.

The connector will use the CPUSERNAME (internal luminis userid) and the synched password (internal luminis password) for the connector. It then never looks at the ExternalAccount information since it has everything it needs. The ExternalAccount credentials are for systems that have different credentials. If you're fortunate enough to have a network like we do here - everything uses a central LDAP so blackboard, webmail, our old portal, luminis, custom secured web apps all have the same id/pw. So you can see why this is such a great find. The only ExternalAccount entry we have is for banweb - SSO to SelfService. Why that can't use LDAP I have no idea. I saw it in the WebTailor setup, but never was able to get it working right.

So what you need to do to set this up is basically step 1 and 2 above

1. CPUSERNAME : Edit your .properties and .xml files for your connector and change any instance of USERNAME to CPUSERNAME (should only be listed in one of the 2 files depending on the type of connector it is)

2. SYNC PASSWORD : The complete syntax is -
    cptool sync password -add cpip externalsystemname
    ie - cptool sync password -add cpip mcbb6

-Jon

Prompting for user credentials on first login

I've followed all the settings listed in this thread and it still asks for credentials on first attempt to the cpip. I am having to either do a cptool add ExternaAccount or manually enter the credentials at first login to get the cpip to auto login on subsequent requests. One question of clarification...does the cptool add ExternalAccount add the credentials to the secret store? Isn't the process described above suppose to bypass the need to define an ExternalAccount.

Some current settings we have
es.idm.createonlogin=1 => is this suppose to auto add the credentials to the secret store?

es.idm.sendcpuid=true
es.idm.autosync=true
es.idm.shortcircuitlogin=true

_CPUSERNAME substituted in .properties and .xml files

CPIP Application Filter [
System Name: idm
]

idm.cpipconnector.getconfig.sendlogin = true
idm.cpipconnector.getconfig.useSISCredentials = false
idm.cpipconnector.getconfig.usePDSCredentials = true

sync password and CPUSERNAME

To sync the password you do a cptool sync password:
$cptool sync password -add cpip CPIPNAME cpuid

And then, like Rich said, you have to use ${_CPUSERNAME} instead of ${_USERNAME} in the code for your CPIP. I don't exactly remember why, but that was the info I recieved from SCT support when I was trying to get our email working.

one more thing

I also forgot to mention that I have these settings in configman:

es.CPIPNAME.createonlogin=1
es.CPIPNAME.sendcpuid=true
es.CPIPNAME.shortcircuitlogin=true

Will this work for non

Will this work for non generic connector adapters?

Also, do I need to sync it after every user import?

The sync password command

The sync password command you only have to run once when you setup your CPIP. A user's external account will be created the first time they try to log into the external system, so I don't think it should have anything to do with user imports.

As far as non Generic Connector adapters... I'm not sure because I have not created any of these yet. I would be curious to know though.

I hope you're able to get everything setup :)

Christine

_CPUSERNAME / sync password

Christine - you rock !

I didn't know using that combination let you not have to create ExternalAccount entries. I tested this and it works great. I changed the _USERNAME to _CPUSERNAME and used an LDAP Browser to remove the cpip ExternalAccount entry and it worked great.

Thank you ! This will make things much easier now. I've been using sync password but I've also been creating ExternalAccount entries.

Wow, that's something they don't teach you in GCF class - go figure.

-Jon

GCF sync

Word up Jon, thats the beauty of this website. Today it's "GCF... the mysteries revealed"

Melissa, as far as the password goes... if you are sync'ing it then you can leave it blank and Luminis will use your system password. Otherwise, if you leave it black without sync'ing it, Luminis will prompt the user for their password.

If that was confusing please let me know and I'll try to explain that a little more clearly.

Happy Holidays everyone!

CPUSERNAME

Hello
I'm trying to use GCF to sign me to one system using my luminis credentials and then redirect to another system that requires it's own credentials.

I can use CPUSERNAME and USERNAME to distinguish between usernames but there seems to be only PASSWORD. I ideally need a CPPASSWORD and a PASSWORD.

has anyone tried anything like this with the GFC?

No secret store entry required

Our experience is that you don't need a secret store entry.

Using cptool to create the External System Account, you'd use the following command:

cptool set user myusername ExternalAccount='systemname|username|password'

If you set a zero length password e.g.

cptool set user myusername ExternalAccount='webct|myusername|'

... then you can configure the CPIP to use the Luminis credentials.

I usually get someone else to do the CPIP though, so I'm little help there.

Hope this helps as a starter.

David.

password?

What about the password?
The luminis username does, but does the password?

having issues getting system credentials to work

Hello,

I have read all the replies in this post and I am trying to get this to work for a SSO GCF connector.

I did all the configuration steps (even the configman settings that Christine posted) but mine only works when I do the
cptool set user username ExternalAccount='cpipname||' command.

For someone that I haven't done that command I get the following message,

External system error

CPIP Notification: Faile to set default CPIP ligin info with params '{}' for per 'John Doe' with external ID 'null'

Has anyone else seen this? Or does anyone have any ideas what I might have missed or be doing wrong?

Thanks

using cpusername

Hello

I had a working GCF cpip using pickup.response created using ExternalAccounts. I chnaged my luminis password and this caused havoc. I came accross this post about using CPUSERNAME and have tried the above but the username that is being sent accross the wire is some sort of hashed gobbldygook rather than the plain text version. and this is the same gobbldygook if I use USERNAME or CPUSERNAME.

here is

1 my .properties section with cpipconnector settings:

rm_bking.cpipconnector.getconfig.createonlogin = 1

rm_bking.cpipconnector.getconfig.authenticate = ${rm_bking.urlBase}/Authenticate
rm_bking.cpipconnector.getconfig.authenticateOIDlist = 1.3.6.1.4.1.4409.1.1.4.2
rm_bking.cpipconnector.getconfig.deauthenticate = ${rm_bking.urlBase}/Deauthenticate
rm_bking.cpipconnector.getconfig.deauthenticateOIDlist = 1.3.6.1.4.1.4409.1.1.6.1
rm_bking.cpipconnector.getconfig.lastactive = ${rm_bking.urlBase}/LastActive
rm_bking.cpipconnector.getconfig.lastactiveOIDlist = 1.3.6.1.4.1.4409.1.1.5.1

rm_bking.cpipconnector.getconfig.sessionPlaceHolder = sessionPlaceHolder
rm_bking.cpipconnector.getconfig.sendcpsession = false
rm_bking.cpipconnector.getconfig.sendtimeout = false
rm_bking.cpipconnector.getconfig.desturl_parmname = destURL
rm_bking.cpipconnector.getconfig.sendlogin = true
rm_bking.cpipconnector.getconfig.useSISCredentials = false
rm_bking.cpipconnector.getconfig.configsleeptime =
rm_bking.cpipconnector.getconfig.configattempts =
rm_bking.cpipconnector.getconfig.shortcircutlogin = true

rm_bking.pickup.destURLParameter = url

2 my configman properties

es.rm_bking.configURL=http://luminis.shef.ac.uk:8008/cpipconnector/rm_bking/GetConfigVersion2
es.rm_bking.sendcpuid=true
es.rm_bking.shortcircuitlogin=true
es.rm_bking.createonlogin=1

I was wondering if someone could help me in the right direction in getting the plain text version of my luminis username

cheers

nomit

hmmm

Have now got it working.
Not sure what happened.

before trying the _CPUSERNAME route I recreated my luminis account.
Testing first with just _USERNAME created a pdsExternalSystemID value relating to my ExternalAccount value.

Then on switching to _CPUSERNAME in my properties file it seems that my ExternalAccount value was being passed as the username field?!

I recreated my account again and used _CPUSERNAME first off. my correct username is being passed now but a pdsExternalSystemID/ExternalAccount for this external system was still subsequently created.

Am I mistaken in thinking that using _CPUSERNAME was a way to avoid unnecessary ExternalAccount creation?

nomit

figured it out

just to close this thread again

I guess if you are using _CPUSERNAME , createonlogin=1 with cpool sync password to avoid ExternalAccount creation, you avoid the creation of the pdsPssEntry.The pdsExternalSystemID is just a flag for the ExternalAccount and doesn't seem to be used in the GCF.

As I note I did get this on the fly ExternalAccount creation working with just using createonlogin=1 and _CPUSERNAME in the GFC files, amd es.CPIPNAME.configURL. Didn't need

es.CPIPNAME.createonlogin=1
es.CPIPNAME.sendcpuid=true
es.CPIPNAME.shortcircuitlogin=true

cheers

useSISCredentials

Hi,

FYI, I was able to get the system credentials just by setting the following property to "true" in the connector properties file:

[sysname].cpipconnector.getconfig.useSISCredentials = true

Our Luminis system currently authenticates against its internal LDAP.

I didn't have to use {_CPUSERNAME} or sync password or change any configman settings. Also, I noticed that there is no ExternalAccount entry for the concerned system when I did a cptool get user.

Shyam

usePDSCredentials

Just wanted to add that when we switched Luminis to authenticate against an external LDAP (EAS), I used the "usePDSCredentials" setting in the cpip properties file to get the system credentials. As with the "useSISCredentials" setting, there were no changes in the XML operations file or configman settings. Also, no external account entry was created for users of the concerned system.

HTH,
Shyam

More on system credentials in a CPIP connector

Hi All:

Has anyone finally distilled the essence of what is required for a passing Luminis credentials to a CPIP accessed system, when the Luminis system itself is using an EAS?

I have tried a few variations on the suggestions here, but they seem quite 'temperamental', and I have no reliable working solution.

Cheers
Tony

A different experience all together...

Hmmm,

I just switched 2 CPIPs that we had setup previously to use usePDSCredentials. They were using a *copy* of the Luminis credentials stored in LDAP, which was a problem if a user changed their Luminis password (the copy would not be changed and a Luminis admin would have to clear the user's LDAP entry for the external system for the pickup/response CPIP). ...these were setup before started working on Luminis and I'm not sure if it was before the usePDSCredentials parameter was made available.

Anyway, I did different things for our 2 CPIPs...

(1) on the first CPIP all I had to do 2 configman commands:

configman -s es.CPIPNAME.usePDSCredentials true
configman -s es.CPIPNAME.autosync=false    [this was set to true]

Before I changed es.CPIPNAME.autosync from true, I would still be prompted for a username/password AND it was stored in the LDAP. After I changed this, no more prompt and no more LDAP entry.

BTW, this CPIP uses the pickup/response method, so the .xml file just has sections for AUTHENTICATE, DEAUTHENTICATE and CHECKSTATE with the RESULT set to true (no GET, POST or SEARCH commands). In the .properties file there is an html string that gets passed to the external system with _USERNAME ... I did *not* have to change it to _CPUSERNAME.

(2) on the second CPIP I converted, I did the same 2 configman commands, BUT I also had to change _USERNAME to _CPUSERNAME in the .xml file. This CPIP uses the pickup.html method.

For neither of the CPIPs did I have to do any cptool commands (the external accounts are all created separate from luminis... that is, we set createonlogin=false).

Not sure if this helps anyone???

Ginny Lee...Colorado School of Mines

Wildcard SSL certificates

Is anyone using a Wildcard certificate on their BB server? We are having a hell of a time getting our CPIP to work when we turn on the SSL in BB. Any feedback would be appreciated.

CACerts

See comment here, I think this will fix your problem. Even though this was ancient, maybe someone else will run across this.

http://www.lumdev.net/node/800#comment-1890

Making the GCF More Generic

Just a followup on this thread-we ran into the problem of not wanting to create separate credential sets for different systems a couple of years back. The above posts should definitely help you use the system credentials. But we found that many of the external systems we were targetting had different username/password field names and/or hidden form values. To abstract out these differences we created an 'even more generic connector'. I did a presentation on it for the developer's lounge last year-more details on this can be found at http://www.lumdev.net/?q=node/606. Hopefully this will help somebody.