-
Notifications
You must be signed in to change notification settings - Fork 422
SCIM provisioning API basic implementation #17144
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
Conversation
ea6a6d6 to
dd52360
Compare
|
(I've taken this out of the review queue as its in draft, let us know if you want feedback) |
|
Hi @erikjohnston There is one design question though. I see that there is a dependency to pydantic in synapse, and I recently published scim2-models that is a library that helps to parse and serialize SCIM2 payloads using pydantic. I think the SCIM implementation would greatly benefit from using scim2-models, as a big part of the specification compliance would be delegated to the library. Would it be acceptable to add a dependency towards scim2-models in synapse, or should I continue checking and building SCIM2 payloads manually? |
f893967 to
81d751b
Compare
dcd72ed to
6a1e1b2
Compare
|
Hi @erikjohnston |
Implementation of a subset of SCIM endpoint and capabilities as described in MSC4098. Signed-off-by: Éloi Rivard <eloi@yaal.coop>
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
|
@reivilibre I think all your comments have been addressed now. Most of them have been fixed in the code and I responded to some with new questions. I am sorry for the many commits, the PR looks like a mess. If it is easier for the review, I can close it and open a new one. Let me know. |
reivilibre
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is looking generally good, but a few comments (and some still open from last time).
The CI is also unhappy but hopefully that's nothing too difficult?
| ``` | ||
| DELETE /_matrix/client/unstable/coop.yaal/scim/Users/@bjensen:test | ||
| ``` | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this was noted on the documentation?
| return env | ||
|
|
||
|
|
||
| def mxc_to_http( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suspect this is no longer functional, given authenticated media means you can't just hotlink to media like this anymore.
|
@reivilibre The I think everything should be solved except the |
|
Hey @azmeuk Thanks for the update. Unfortunately, we won't be able to continue work on this PR at this time for a couple of reasons:
Thanks very much for taking the time to develop this PR and get it to this stage - I just want to acknowledge this isn't an ideal situation to come to this conclusion at this stage and really appreciate the effort you've put in! |
|
To clarify (speaking as element ceo/cto), there are three considerations here:
So, my recommendation here would be to maintain this out-of-tree, either in Synapse (given that's where the work has happened already), or as a third-party Synapse module, or even better to do it on MAS (although I can't guarantee that we'd have bandwidth to accept it there either. plus I guess MAS being in Rust might be an obstacle). I can only apologise that we (I) didn't spot this back in May 2024 and warn that this might not be a feature we'd be able to merge. |
|
Hi. I'll see how much work it would ask to maintain this out of synapse, but I fear this would double the maintenance burden. I might tackle the implementation on MAS some day, but certainly not anytime soon. I would not benevolently contributing to a proprietary feature though, and on the other hand I understand that you would not be interested in paying for a feature you did not even ask in the first place. So for this to happen, this should probably be funded by someone else. |
This is an implementation of MSC4098. It implements a subset of the SCIM provisioning protocol defined in RFC7643 and RFC7644.
It contains:
synapse/rest/admin/users.py.The SCIM requires needs python 3.9+ (because of the use of typing.Anotated in scim2-models) and pydantic 2.7.0+
SCIM implementation details
Only a subset of the SCIM endpoints are implemented:
What's implemented:
What is defined in the SCIM specs but not implemented here:
What do you think?
Pull Request Checklist
EventStoretoEventWorkerStore.".code blocks.(run the linters)