Loofer
Loofer

Reputation: 6963

How to open a link from one web app to another already authenticated?

We have one web application (sharepoint) that collects information from disparate sources. We would like to be able to link users to the main websites of those various sources and have them pre-authenticated. I.E. they enter their credentials for the other sources (which are a number of different types LDAP, AD and home grown!) and we retrieve some information for them, and remember there details (Possibly Single Sign-on to keep em nice and safe). The user can then click a link that will open the full app in another window already authenticated.

Is this even likely to be possible?

Upvotes: 1

Views: 1077

Answers (3)

Øyvind Skaar
Øyvind Skaar

Reputation: 1840

Office Server has a Single-Sign-On api as a builtin feature. you may want to look into that. It enables you to register user credentials securely, and to access it at runtime.

Upvotes: 2

Corbin March
Corbin March

Reputation: 25734

True Single Sign-on is a big task. Wikipedia describes common methods and links to a few SSO projects.

If you want something lighter, I've used this approach in the past:

  • Create a table to store temporary security tokens somewhere that all apps can access.
  • From the source app (Sharepoint in your case), on request of an external app, save a security token (maybe a guid, tight expiration, and userid) in the token table.
  • Redirect to a request broker page/handler in the destination app. Include the final page requested and the guid in the request.
  • In the broker, look up the security token. If it exists and hasn't expired, authenticate, authorize, and redirect to the final page if everything is good. If not, send a permissions err.

Security-wise, a guid should be near impossible to guess. You can shrink risk by letting the tokens expire very quickly - it shouldn't take more than a few seconds to call the broker.

If the destination app uses Windows Auth and doesn't have role-based logic, you shouldn't have to do much. Just redirect and let your File/UrlAuthorization handle it. You can handle role-based permissions with the security token db if required.

Upvotes: 1

Janko Mivšek
Janko Mivšek

Reputation: 3964

You need to act as a web browser acts to different sites with storing credentials (usually in cookies) locally. Use therefore a a proper client library with cookie support. This could go probably for most of sites. There are sites using HTTP authentication, which are also easier to access from appropriate client libraries. The most demanding can be access to SSL websites, but again, most client HTTP libraries cover that nowadays as well.

All you need now is just to prepare your web application to act as a proxy to all those separate web resources. How exactly this is done in Sharepoint, well, I hope others will answer that...

Upvotes: 1

Related Questions