-
-
Notifications
You must be signed in to change notification settings - Fork 221
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Select an Identity Provider service for development #9737
Comments
@rmayore - you had expressed interest in working on this ticket - thank you! |
Yes @mrjones-plip |
If we settle on a commercial service, is it possible to use Microsoft Azure AD. |
@raphaelkenyuri - are you asking if the MVP will work on Azure AD (now called Entra ID I see) or if the development effort can use Azure AD? In give my opinion on both, but will defer to @rmayore who's working on this ticket ;)
|
Features to consider for testing
Extras (Beyond Testing)
Options Considered1. Shibboleth❌ Free only for development and testing 2. Keycloak✔️ Free 3. OpenIAM❌ Current release paid, old releases paid 4. Evolveum❌ Free, but paid for support, such as bug fixes, configuration consulting, and training 5. FusionAuth❌ Not open-source 6. Apache Synocope✔️ Free 7. Auth0❌ Paid but there's a free tier |
@mrjones-plip @raphaelkenyuri most of the options above support user federation, allowing syncing of identities from other LDAP or AD systems, therefore precluding the need to have AD itself as an option. As an example, Keycloak can be set up to use Azure AD as an Identity Provider. |
RecommendationI recommend we pick Keycloak because of the following reasons:
|
I'll try to write some E2E tests against Keycloak, so we can cross that off. |
excellent research and great transparency on your process - thank you @rmayore ! I would say do what ever testing (either manual setting up of docker or nascent e2e tests) and once you feel confident in your choice - write up some docs (just on this ticket is a good place to start) on how to set up a development environment. Keep to just the simplest of steps covering just the happy path. w00t! |
Thanks for the great write-up @rmayore! KeyCloak seems like a solid choice for using during development. I like how it gives a nice web GUI for configuring services/users/etc. If anyone has a basic docker compose config for spinning up KeyCloak locally that they could share here, that would be great! |
maybe need TLS in dev? Local-IP certs might be handy! These work on any local IP on a LAN and offer an easy way to |
Setup@mrjones-plip you can spin up keycloak locally with the below docker command:
Optionally, you can put this into a docker compose file:
The start it with Access |
This is great work - thanks @rmayore ! I'm able to easily spin up a keycloak instance with either What is the advantage of the compose file using a Postgres database? I noticed if I went with a simplified compose file, keycloak worked (well, I was able to log in ;) with out it - I see defaulting to I think if there's no advantage to postgres in a development scenario, maybe we skip it? Less complexity is better! Finally - do we yet know what the OIDC flow will require in terms of TLS? If we think we'll need TLS, it might be worth researching how to implement it in a dev scenario? |
It looks like However, we of course will not want to have this option set in the final version of the code. So, eventually we will need to sort something out for TLS (particularly when doing the e2e tests) |
(oops! clicked the "close" button by accident - sorry!) Gotcha - make sense Josh! With the hard part done by @rmayore already, I was able to stand up a TLS instance pretty easily: services:
keycloak_web:
image: quay.io/keycloak/keycloak:26.1.1
container_name: keycloak_web
environment:
KC_HOSTNAME: 127-0-0-1.local-ip.medicmobile.org
KC_LOG_LEVEL: info
KC_METRICS_ENABLED: true
KC_HEALTH_ENABLED: true
KEYCLOAK_ADMIN: "${KEYCLOAK_ADMIN:-admin}"
KEYCLOAK_ADMIN_PASSWORD: "${KEYCLOAK_ADMIN_PASSWORD:-admin}"
KC_HTTPS_CERTIFICATE_FILE: /etc/x509/https/tls.crt
KC_HTTPS_CERTIFICATE_KEY_FILE: /etc/x509/https/tls.key
command: start-dev
ports:
- 8080:8080
- 8443:8443
volumes:
- ./certs:/etc/x509/https These three commands were needed: mkdir -p certs
curl -o certs/tls.crt https://local-ip.medicmobile.org/fullchain
curl -o certs/tls.key https://local-ip.medicmobile.org/key And then my instance was available at https://127-0-0-1.local-ip.medicmobile.org:8443 |
Well, honestly, what is left for this issue? 😅 Maybe we should close it! |
Rock on! @rmayore - feel free to re-open if you feel we need more work here. Thanks all! |
@mrjones-plip completely agree we don't need an extra containser for pg if we can avoid it |
Describe the issue
In order to be able to actually be sure our code works for the SSO effort in #9735, we need to both have an instance that can be developed against, but also that can work in e2e tests.
Describe the improvement you'd like
Find a solution that is either cloud based or docker based (or both?!) - but that is easy to set up and test against that provides just the most limited services we need.
Describe alternatives you've considered
Pay for an existing commercial service that one of the SSO squad members recommends.
The text was updated successfully, but these errors were encountered: