Need guidance with basic setup of adding and external SAML Identity providers to Keycloak

Hello there,

Sorry for this novice question, I’m having an hard time trying to do something that should be quite basic, and most doc and articles I can find online are AI written stuff that is not helping, so I assumed I might as well ask.

I have a .NET ASP.net web app hosted under kubernetes. I want to add support to log users from external domains using SSO login to my app. Keycloak seems like a perfect candidate. I do not want to use keycloak as a provider for multiple apps, only my public facing web app.

I installed it, added my app as a OIDC client in keycloak, managed to configure dotnet to point to it when requesting a challenge, and it actually works great! It redirect to keycloak, I log in with a temporary user I manually created in the keycloak service, it redirect to my app with the proper credentials.

Now I need to configure keycloak to be able to use users from external providers.

To be clear, I don’t want keycloak to provide users to external providers (which is what most online articles seems to be about), so I do not want to add a SAML client in keycloak right? I want external users to be accepted in my keycloak instance, so I want to add a new SAML “Identity provider” in keycloak right?

My first test is with the IT guys from my corporation, we want to use our SAML provider to use our local domain users in my web app. They are using “Watchguard” as the authority service, and successfully integrated easily with other SAML services like Miro and Atlassian and such.

They gave me a SAML Metadata XAML URL, which I added as a id provider in keycloak successfully.

Now apparently, usually they also need to add a resource on their side to represent my app. With two required fields: Service Provider Identifier, and Assertion Consumer Service.

From the Keycloak IdProv entry I created, there’s a SAML metadata link and one of the entry in the xml is <md:AssertionConsumerService. So I assume that’s it. It looks like https://domain.com/realms/master/broker/idprovname/endpoint

Unfortunately that does not work. When I use keycloak, I see the button to use that provider, and it redirect to their login page, with a “Service provider not found.” message. If I try to log in anyway, it then redirect to their webpage with a list of services their id prov is connected to instead of directly redirecting to keycloak. One of them is keycloak, but if I click the button it then go back to keycloak to the url above (endpoint) with a “unexpected error” message.

I’m probably just missing something very obvious, but I’m kinda stuck now and don’t know how to progress.

On a separate question. Does all external providers you add just appear as a “sign with” button at the bottom of the keycloak login page? That’s not desirable. Most app just have a “sign with SSO” and use the e-mail domain to determine which provider to use, or maybe check them all. I would not want to configure like 10 different corporate providers and the people from corporations A see the button for corporation B? Isn’t it possible to just hide that button step and just use the email/password directly?

Ok I solved my main issue which was simply the “Service Provider Identifier”, I needed to enter the full URL with the realm. Also visible in the metadata XML. Sorry for all that text.

My second question about visible buttons still remain valid.

Organizations are your friend

Interesting. Thank you.

I would have never expected that using this feature would automatically change the UI flow to hide the password field and have a redirect based on domains.

I thought it was simply a different method to group users and assign custom attributes, but that was also possible elsewhere so I didn’t even try to use it.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.