whose username/password goes into the getSingleSignOn API Call

Options

Ok I thought I understood this but now I'm really confused.

This is what I want to do:

1) User enters their convio login information on Oxfam website

2) User is logged in via convio and sent to a convio page

I guess what I'll be using to perform this task is the getSingleSignOn API Call - Is this Correct?

I could have sworn that I read somewhere that the username/password passed into the getSingleSignOn call is a separate user that is authorized to make API Calls. - Is this Correct?

If it is not correct and the username/password belongs to a random user, entering the information on the login page, then:

My question is: Apart from just a simple username/password I also have to pass their constituent id.

The problem is I have no way of knowing the constituent id - Am I supposed to save this information in a db and retrieve it everytime they try to log in?

My next question is: The authentication does not work if the user does not have the Contact Management "Use Convio API" permission set.

So am I supposed to turn this on for every one of the users? We have 1000s of users in convio so I hope I don't have to do this

Tagged:

Comments

  • You may consider checking out the alternative method for SSO Authentication in Convio posted at the following community document post:

    http://community.customer.convio.com/docs/DOC-1739

    Most people find this approach much easier to understand and implement. It allows you to authenticate the user with Convio as the "master" system while still having access to the external system.

    To directly answer your question about the API, the "Use Convio API" permission is an administrative permission and should not be added to groups that end users belong to. Admin users that belong to groups with this permission will not be able to login through the admin console because the permission limits them to accessing the data via api calls.

  • Corey Pudhorodsky:

    You may consider checking out the alternative method for SSO Authentication in Convio posted at the following community document post:

    http://community.customer.convio.com/docs/DOC-1739

    Most people find this approach much easier to understand and implement. It allows you to authenticate the user with Convio as the "master" system while still having access to the external system.

    To directly answer your question about the API, the "Use Convio API" permission is an administrative permission and should not be added to groups that end users belong to. Admin users that belong to groups with this permission will not be able to login through the admin console because the permission limits them to accessing the data via api calls.

    You mentioned that this is an alternative - Does this mean this has nothing to do with the single sign-on API described at the url below?:

    http://open.convio.com/api/sso-api/

    If these 2 are not the same then what is different and where can I find a similar document that explains the API described here http://open.convio.com/api/sso-api/

    My reason for sticking with the api described here http://open.convio.com/api/sso-api/ is that I've already invested weeks coding the python API - I'm really close and just need some questions answered so I can finish it.

    Thanks in advance for your answers

  • Corey Pudhorodsky:

    You may consider checking out the alternative method for SSO Authentication in Convio posted at the following community document post:

    http://community.customer.convio.com/docs/DOC-1739

    Most people find this approach much easier to understand and implement. It allows you to authenticate the user with Convio as the "master" system while still having access to the external system.

    To directly answer your question about the API, the "Use Convio API" permission is an administrative permission and should not be added to groups that end users belong to. Admin users that belong to groups with this permission will not be able to login through the admin console because the permission limits them to accessing the data via api calls.

    Is there a similar pdf document that explains in detail the process described here

    If not please please let me know what I'm doing wrong in the following steps below:

    1) A user enters their username/password in the login form. The login form points to a script on my server

    2) In the server I use the getSingleSignOn API call to get the authentication token. Now I did not use the username/password from the login form to do this. Instead I used the API user I created in the admin section to make this API call. The process for creating the admin user is described here:

    Was I wrong in using the API admin user to get the authentication token? Was I supposed to use the username/password from the login form?

    3) Now I have successfully retrieved an authentication token using the admin user I created. Now how do I authenticate the username/password from the login form??

  • Kofi Hamilton:

    Is there a similar pdf document that explains in detail the process described here

    If not please please let me know what I'm doing wrong in the following steps below:

    1) A user enters their username/password in the login form. The login form points to a script on my server

    2) In the server I use the getSingleSignOn API call to get the authentication token. Now I did not use the username/password from the login form to do this. Instead I used the API user I created in the admin section to make this API call. The process for creating the admin user is described here:

    Was I wrong in using the API admin user to get the authentication token? Was I supposed to use the username/password from the login form?

    3) Now I have successfully retrieved an authentication token using the admin user I created. Now how do I authenticate the username/password from the login form??

    To answer this question, it might be best to go back to the question in your original post:

    My question is: Apart from just a simple username/password I also have to pass their constituent id.

    The problem is I have no way of knowing the constituent id - Am I supposed to save this information in a db and retrieve it everytime they try to log in?

    The assumption here is that you have authenticated the user with your local server's login and password and the relationship between the Convio contact and your server's contact record that you are using to authenticate is already established (via data sync or prior registration). Since you have the token from the GeToken method, you can then use the singleSignOn method to log the client user onto the Convio site.

    To troubleshoot or test with the code that you already have written, try passing the contact ID for a Convio end user via the GetToken API and then use that token on a client call to establish the session with the Convio server. Then the client should be able to view Convio pages as if they had logged in through the Convio login page.

  • There's been a lot of confusion around the getSingleSignOn API. It is intended to handle the scenario where you want to handle the authentication within your system and force a Convio session to login as a particular user id based on an authentication protocol that you are enforcing on your end (aka "Convio as slave" configuration).

    It doesn't sound like this is the scenario that you are dealing with; it sounds like you want to do the more traditional "Convio as master" configuration. If that's the case, then the document that Corey referenced is definitely the way to go, and there's no way to accomplish the "Convio as master" SSO using the APIs. There are other ways to do it that leverage shared cookies, but the signed redirects is the easiest to implement and really makes for a pretty elegant solution. You will still be using the other Constituent APIs once the user logs in, so your investment in getting the Python code working will not be wasted.

    Check out the document that Corey referenced. It explains the implementation pretty clearly along with some of the less obvious subtleties that you will need to deal with. You can also have your AM schedule a call with me, and I can give you some more help if you want.

    Dave

  • DavidHart :

    There's been a lot of confusion around the getSingleSignOn API. It is intended to handle the scenario where you want to handle the authentication within your system and force a Convio session to login as a particular user id based on an authentication protocol that you are enforcing on your end (aka "Convio as slave" configuration).

    It doesn't sound like this is the scenario that you are dealing with; it sounds like you want to do the more traditional "Convio as master" configuration. If that's the case, then the document that Corey referenced is definitely the way to go, and there's no way to accomplish the "Convio as master" SSO using the APIs. There are other ways to do it that leverage shared cookies, but the signed redirects is the easiest to implement and really makes for a pretty elegant solution. You will still be using the other Constituent APIs once the user logs in, so your investment in getting the Python code working will not be wasted.

    Check out the document that Corey referenced. It explains the implementation pretty clearly along with some of the less obvious subtleties that you will need to deal with. You can also have your AM schedule a call with me, and I can give you some more help if you want.

    Dave

    Ah - ok now I understand

    I'll take a look at Corey's doc and hope I have no more questions

    By the way you should post your replies about what the getSingleSignOn/singleSignOn API achieves on here http://open.convio.com/api/sso-api/

    It will save people a lot of running around

  • Corey Pudhorodsky:

    To answer this question, it might be best to go back to the question in your original post:

    My question is: Apart from just a simple username/password I also have to pass their constituent id.

    The problem is I have no way of knowing the constituent id - Am I supposed to save this information in a db and retrieve it everytime they try to log in?

    The assumption here is that you have authenticated the user with your local server's login and password and the relationship between the Convio contact and your server's contact record that you are using to authenticate is already established (via data sync or prior registration). Since you have the token from the GeToken method, you can then use the singleSignOn method to log the client user onto the Convio site.

    To troubleshoot or test with the code that you already have written, try passing the contact ID for a Convio end user via the GetToken API and then use that token on a client call to establish the session with the Convio server. Then the client should be able to view Convio pages as if they had logged in through the Convio login page.

    Quick question on the document Corey:

    Is the Form action url the same as ??

    In other words what is the url of the user login servlet that sits on Convio?

  • Kofi Hamilton:

    Quick question on the document Corey:

    Is the Form action url the same as ??

    In other words what is the url of the user login servlet that sits on Convio?

    You should use the http://www.foo.org/site/UserLogin URL to authenticate the user in all cases. When necessary, the site will redirect the user to a secure (https://secure2.convio.net/foo...) page to process the request. For the purpose of the user login, always direct to the http://www.foo.org/site/UserLogin where "foo" is the short name for your site.

  • Corey Pudhorodsky:

    You should use the http://www.foo.org/site/UserLogin URL to authenticate the user in all cases. When necessary, the site will redirect the user to a secure (https://secure2.convio.net/foo...) page to process the request. For the purpose of the user login, always direct to the http://www.foo.org/site/UserLogin where "foo" is the short name for your site.

    Thanks for you prompt reply Corey

    what is the url that I need to redirect to on the Convio site

    You started writing it out but ended with ...

  • Kofi Hamilton:

    Thanks for you prompt reply Corey

    what is the url that I need to redirect to on the Convio site

    You started writing it out but ended with ...

    Don't worry about the secure link, I included the .. to indicate that there could be a number of pages that are secured.

    The link that you should be redirecting to is: http://www.foo.org/site/UserLogin where foo is equal to the short name of your site.

  • Corey Pudhorodsky:

    Don't worry about the secure link, I included the .. to indicate that there could be a number of pages that are secured.

    The link that you should be redirecting to is: http://www.foo.org/site/UserLogin where foo is equal to the short name of your site.

    I guess I'm not understanding what is then

    There's no path on my site that corresponds to

    Is UserLogin a script that I can download or is it a script that does API calls or does the redirecting?

  • Corey Pudhorodsky:

    Don't worry about the secure link, I included the .. to indicate that there could be a number of pages that are secured.

    The link that you should be redirecting to is: http://www.foo.org/site/UserLogin where foo is equal to the short name of your site.

    Let me explain my question a bit more:

    The documentation says:

    Form on a partner site is submitted to the UserLogin servlet on a Convio-powered site.

    I guess my question is: This UserLogin servlet does not exist on my site. Where do I download it?

    If it's not downloadable but rather it is a script which I create myself then my other question is:

    What is the Convio Link that I can redirect to so the credentials get authenticated?

    Is it ??

  • Kofi Hamilton:

    Let me explain my question a bit more:

    The documentation says:

    Form on a partner site is submitted to the UserLogin servlet on a Convio-powered site.

    I guess my question is: This UserLogin servlet does not exist on my site. Where do I download it?

    If it's not downloadable but rather it is a script which I create myself then my other question is:

    What is the Convio Link that I can redirect to so the credentials get authenticated?

    Is it ??

    I suspect your case is a little unique since you are still in deployment and your DNS has not been fully configured.

    You can also use: http://foo.convio.net/site/UserLogin where "foo" is the short name of your site. Later, the domain which you are directing to your Convio site would also work in replace of "foo.convio.net".

  • Corey Pudhorodsky:

    I suspect your case is a little unique since you are still in deployment and your DNS has not been fully configured.

    You can also use: http://foo.convio.net/site/UserLogin where "foo" is the short name of your site. Later, the domain which you are directing to your Convio site would also work in replace of "foo.convio.net".

    Where can I configure my DNS?

    I have setup everyting (at least I think so) what when the user tries to login its redirects them to https://secure2.convio.net/oxfam/admin/AdminLogin

  • Corey Pudhorodsky:

    I suspect your case is a little unique since you are still in deployment and your DNS has not been fully configured.

    You can also use: http://foo.convio.net/site/UserLogin where "foo" is the short name of your site. Later, the domain which you are directing to your Convio site would also work in replace of "foo.convio.net".

    By the way the pdf document shows the login form as:

    <form method="post" action="http://www.foo.org/site/UserLogin">

    <input type="text" name="USERNAME" id="USERNAME" maxlength="60" />

    <input type="password" name="Password" id="Password" maxlength="20" />

    <input type="hidden" name="NEXTURL" id="NEXTURL" value="http://www.foo.org/site/PageServer?pagename=sso_redirect" />

    value="http</form>

    shouldn't it be:

    <form method="post" action="http://foo.convio.net/site/UserLogin">

    <input type="text" name="USERNAME" id="USERNAME" maxlength="60" />

    <input type="password" name="Password" id="Password" maxlength="20" />

    <input type="hidden" name="NEXTURL" id="NEXTURL" value="http://foo.convio.net/site/PageServer?pagename=sso_redirect" />

    </form>

  • Kofi Hamilton:

    By the way the pdf document shows the login form as:

    <form method="post" action="http://www.foo.org/site/UserLogin">

    <input type="text" name="USERNAME" id="USERNAME" maxlength="60" />

    <input type="password" name="Password" id="Password" maxlength="20" />

    <input type="hidden" name="NEXTURL" id="NEXTURL" value="http://www.foo.org/site/PageServer?pagename=sso_redirect" />

    value="http</form>

    shouldn't it be:

    <form method="post" action="http://foo.convio.net/site/UserLogin">

    <input type="text" name="USERNAME" id="USERNAME" maxlength="60" />

    <input type="password" name="Password" id="Password" maxlength="20" />

    <input type="hidden" name="NEXTURL" id="NEXTURL" value="http://foo.convio.net/site/PageServer?pagename=sso_redirect" />

    </form>

    Also

    <img src="http://www.foo.org/site/PixelServer" />

    should be

    <img src="http://foo.convio.net/site/PixelServer" /> . Right??

    And

    should be

    . Right??

  • Kofi Hamilton:

    Also

    <img src="http://www.foo.org/site/PixelServer" />

    should be

    <img src="http://foo.convio.net/site/PixelServer" /> . Right??

    And

    should be

    . Right??

    Hi Kofi,

    I'm really sorry for all the confusion we've created for you and glad to see that it looks like you're making good progress now.

    The "foo.convio.net" style domain names are created as "staging" site names and are typically used only during the preparation of your site. Then once the site goes live, we will switch it over to use a more branded domain (aka www.foo.org) as the preferred domain name within our system. A few customers continue using the convio.net domains even after they have gone live. For customers who do have a branded domain, both domains will continue to work, but in general you want to phase out the use of the convio.net URLs quickly. In particular, if you are using the APIs and potentially domain level cookies that you want to share between the Convio site and other systems, you will need to use your own domain name.

    Net net is that for now, you need to use your staging site name, but you should write your code to pick up the domain name from a single reference (property file or constant in the code). This way, you can quickly change it once you do go live with a branded URL.

  • DavidHart :

    Hi Kofi,

    I'm really sorry for all the confusion we've created for you and glad to see that it looks like you're making good progress now.

    The "foo.convio.net" style domain names are created as "staging" site names and are typically used only during the preparation of your site. Then once the site goes live, we will switch it over to use a more branded domain (aka www.foo.org) as the preferred domain name within our system. A few customers continue using the convio.net domains even after they have gone live. For customers who do have a branded domain, both domains will continue to work, but in general you want to phase out the use of the convio.net URLs quickly. In particular, if you are using the APIs and potentially domain level cookies that you want to share between the Convio site and other systems, you will need to use your own domain name.

    Net net is that for now, you need to use your staging site name, but you should write your code to pick up the domain name from a single reference (property file or constant in the code). This way, you can quickly change it once you do go live with a branded URL.

    Ohhhhhhh - I see

    so on my site points to by way of DNS aliasing. Is that correct?

    I thought UserLogin was a script provided by Convio. A simple note in the pdf stating that it is a DNS aliased url will be very very helpful.

    So should I point to or

  • DavidHart :

    Hi Kofi,

    I'm really sorry for all the confusion we've created for you and glad to see that it looks like you're making good progress now.

    The "foo.convio.net" style domain names are created as "staging" site names and are typically used only during the preparation of your site. Then once the site goes live, we will switch it over to use a more branded domain (aka www.foo.org) as the preferred domain name within our system. A few customers continue using the convio.net domains even after they have gone live. For customers who do have a branded domain, both domains will continue to work, but in general you want to phase out the use of the convio.net URLs quickly. In particular, if you are using the APIs and potentially domain level cookies that you want to share between the Convio site and other systems, you will need to use your own domain name.

    Net net is that for now, you need to use your staging site name, but you should write your code to pick up the domain name from a single reference (property file or constant in the code). This way, you can quickly change it once you do go live with a branded URL.

    Also are there any administration setups that I need to complete to do "Single Sign-On with Signed URL Redirects". Please point me to documentation that shows me how.

Categories