You have a few options. The first is to replace the current implementation of the IHttpRequest and IHttpResponse interfaces that are defined under the ComponentSpace.Saml2.Bindings namespace. Your implementation would be based off accessing the equivalent HTTP request and response objects in ServiceStack and you would register these at application startup. For example, if your implementation classes were ServiceStackHttpRequest and ServiceStackHttpResponse, your code would be: services.TryAddTransient<IHttpRequest, ServiceStackHttpRequest>(); services.TryAddTransient<IHttpResponse, ServiceStackHttpResponse>();
This approach would be best depending on how feasible it is to implement these interfaces and whether or not it fits into the ServiceStack model.
The second option is to not use the ISamlIdentityProvider or ISamlServiceProvider interfaces normally used when supporting SAML SSO. Instead, you would call the low-level APIs. Classes for manipulating SAML protocol messages and SAML assertions are under the ComponentSpace.Saml2.Protocols and ComponentSpace.Saml2.Assertions namespaces respectively. This would require more application code but provides the greatest flexibility. This approach is closer to the code in the SamlAuthProvider.cs link you sent. The third option is to use our SAML authentication handler middleware. However, I'm not sure if ASP.NET Core authentication handlers are supported in ServiceStack.
Regards ComponentSpace Development
|