We are new to Winshuttle and have Foundation installed with Workflow/Composer. Currently, we are working on developing our first production workflow application. The application will be a workflow for creating purchase requisitions. Being as this will be a widely used application by many users, we want to make the application pretty flexible and easy to use and maintain. Our development hit a huge snag, though. We use Kerberos SNC SSO (Single Sign-On) for connecting to SAP. Therefore, we were hoping to use Kerberos SSO for the Workflow application. We haven't been able to get it to work, however, and are hoping perhaps someone else has.
We have been told all long that this is possible, but after our most recent encounter with support we were told it's not possible. We have been given three potential workarounds for this: 1) store and maintain everyone's Windows credentials in Foundation, 2) run the Workflow SAP web services under a dedicated service account, and 3) add credential inputs into each and every workflow.
The first option is not feasible and goes against our security policies, as it requires hundreds of users storing and updating their credentials in SharePoint.
The second option won't work either because it requires a dedicated service account to have full SAP permissions to account for all users who might potentially use the application. We lose the major selling point of Winshuttle's ability to play nicely with SAP security.
The third option negates the whole point of SSO.
We were hoping someone else has run into this issue and successfully implemented SSO. Even if it means we move to another form/implementation of SSO, we would consider it. Kerberos with multiple hops is a very common scenario, so we're trying to understand where the problem is that does not allow for the Kerberos authentication to pass all the way through to SAP. I'm not sure about the exact architecture of the Workflow application, but my guess is that it works something like this:
1) User connects to Workflow which resides on the Foundation/SharePoint server.
2) Workflow server makes an HTTP call out to integration (or perhaps the call is an AJAX call from the client)
3) Integration Server makes call to SAP
Now the fuzzy part is on the integration server - my guess is that the call from Workflow SharePoint application to the integration server is made via HTTP to the WinshuttleServer website's web service. From there, I'm guessing there's a means of passing the data to the Worker Windows service. I know RabbitMQ is used, so I'm guessing perhaps this is the means of passing information between the web service and the windows service using
RPC (request/reply), but perhaps I'm wrong? From there, I'm assuming the windows service reads the message, makes the request to SAP, and returns the data back to the web service on the integration server, which then returns the data back to the Workflow server (or client if it's an AJAX call).
If this is the case, then my assumption is the problem likely lies in the RabbitMQ aspect. Perhaps they haven't figured out how to pass the ticket through the queue. From what I know of Kerberos, as long as you can identify the services and dedicate authorized service accounts for them, then you should be able to delegate the hops. I know there is a Kerberos authentication module for RabbitMQ, but it might not be for hopping the identity from publisher to subscriber, but I would assume you could include the ticket in the message itself. Perhaps this isn't where the issue lies. I would like to understand, because it seems like a solvable problem, and right now we cannot move forward with Winshuttle without it being solved.
------------------------------
Zachary Daily
Application & Systems Development Engineer
BWX Technologies Inc.
------------------------------