-
Notifications
You must be signed in to change notification settings - Fork 40
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
Want API endpoints for updating IdP config #3125
Comments
Yeah. There are a couple of different things here: One is changing some of the connection parameters (e.g., DNS name, IP address, or signing certificate), while still talking to the same (logical) IdP. I think that's not controversial and is just a question of priority. The other is migrating to a different IdP, by which I mean one whose ids are not guaranteed to match the ones already used. This one has a bunch of tricky failure modes that are both hard to detect ahead of time and hard to resolve. RFD 234 discusses this a bit in the "Alternatives considered" section. To give an example: suppose a person's id doesn't match between the IdPs. When they log in after the switch, we'll create a second account for them. There is no way for us to detect this problem because it looks to us like a new person. Any resources they had access to in their old account may be orphaned (i.e., there may be nobody with access any more, though hopefully there's a Silo Admin who can grant privileges on them). If they're resources tied to an account (like an ssh key, though if that's the only such resource then this probably isn't a big deal), a Silo Admin may not be able to help. They might also create more of these resources in the new account before figuring out what's happened and then want them to be merged (which would be a new feature we'd have to build). This is what I mean by "hard to detect ahead of time and hard to resolve". A much worse problem might be that the new IdP uses the same identifiers to mean different things! e.g., "admin" in the new IdP now refers to, say, the administrative staff rather than "the superuser group". Or "bob" refers to a different person.
Out of curiosity, did this one come from customer conversations? The reason I ask is that when we discussed this, we concluded that usually when big companies migrate IdPs, they preserve compatibility one way or another at the IdP. That's just my (potentially wrong) recollection of experiences reported by folks at Oxide who've worked in this area. If a customer's said they want this, it would be helpful to understand more about what they're doing so that we can figure out how best to solve the above problems. |
This came out of the product eng call this morning as we talked about the onboarding workflow. I have not filed this request previously because I was (vaguely) aware of some of the complications you mentioned above. So, yes, this is probably not a MVP or even MVP+1 issue. Sorry for rehashing something that has been discussed previously. |
Not at all -- thank you for filing this! It's good to have a record and a place to discuss it. And we can certainly revisit any past decisions. |
The inability to fix IdP configuration issue has made first-time customer install a bit rocky during new silo setup. We can perhaps allow IdP modifications in a more limited way without opening the door to supporting account/provider migration:
|
Towards point 1. here, I wrote this up is a separate ticket but I think it is worth documenting in the omicron repo as a suggestion for make the "Configuration" step an explicit state of the IdP resource:
|
We are coming up on a SAML certificate rotation (November 18) for our Google connected internal silos on both dogfood and colo. I re-read through RFD 234 and it suggests that we considered endpoints for certificate rotation. I presume that is still the thinking here? (@inickles). I am sure we can find a way to work around this internally, but I wanted to bump this up as it can come up quickly on a customer if they are using a SaaS IdP where they do not control the certificates. |
This will be useful for two use cases:
The text was updated successfully, but these errors were encountered: