개요
SCIM 프로토콜은 SCIM 스키마를 통해 지정된 신원 데이터를 프로비저닝하고 관리하기 위한 HTTP 기반 프로토콜입니다. Casdoor를 SCIM 서비스 제공자로 사용할 수 있습니다.
Casdoor를 SCIM 서비스 제공자로 사용하기
현재 Casdoor는 User Resource Schema
만 지원하며, SCIM User 작업을 통해 사용자를 관리할 수 있습니다. 다음 엔드포인트를 통해 Casdoor와 상호 작용할 수 있습니다:
엔드포인트 | 방법 | 설명 |
---|---|---|
/scim/ServiceProviderConfig | GET | 지원되는 리소스 등, SCIM 표준의 기능에 대한 세부 정보를 제공합니다. |
/scim/Schemas | GET | 서비스 제공자 스키마에 대한 세부 정보를 제공합니다. |
/scim/ResourceTypes | GET | 각 리소스에 대한 메타데이터를 지정합니다. |
/scim/Users/:id | GET | 리소스 식별자 id 를 가진 사용자를 검색합니다. |
/scim/Users | GET | 쿼리 매개변수로 사용자를 쿼리합니다(현재는 startIndex 와 count 만 지원합니다). |
/scim/Users | POST | 사용자를 생성합니다. |
/scim/Users/:id | PUT | 리소스 식별자 id 를 가진 사용자를 업데이트합니다. |
/scim/Users/:id | PATCH | PATCH 작업으로 리소스 식별자 id 를 가진 사용자를 수정합니다. |
/scim/Users/:id | DEL | 리소스 식별자 id 를 가진 사용자를 삭제합니다. |
자세한 내용은 rfc7644를 참조하십시오.
사용자 리소스
Casdoor는 User Resource Schema
(SCIM)와 User
(Casdoor) 사이의 매핑을 구현합니다. 속성 간의 매핑 관계는 다음과 같습니다:
User Resource Schema (SCIM) | User (Casdoor) |
---|---|
id | Id |
meta.created | CreatedTime |
meta.lastModified | UpdatedTime |
meta.version | UpdatedTime |
externalId | ExternalId |
userName | Name |
password | Password |
displayName | DisplayName |
profileUrl | Homepage |
userType | Type |
name.givenName | FirstName |
name.familyName | LastName |
emails[0].value | |
phoneNumbers[0].value | Phone |
photos[0].value | Avatar |
addresses[0].locality | Location |
addresses[0].region | Region |
addresses[0].country | CountryCode |
Casdoor는 조직을 사용하여 사용자를 관리하며, 각 사용자는 특정 조직에 속하므로, organization
속성은 Enterprise User Schema Extension
(스키마 URI urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
로 식별)에 전달되어야 합니다. 다음은 JSON 형식의 User Resource Schema SCIM 표현입니다:
{
"active": true,
"addresses": [
{
"country": "CN",
"locality": "Shanghai",
"region": "CN"
}
],
"displayName": "Bob~",
"emails": [
{
"value": "test1@casdoor.com"
}
],
"externalId": "1234123543234234",
"id": "ceacbcb6-40d0-48f1-af23-0990232d570a",
"meta": {
"resourceType": "User",
"created": "2023-10-08T23:51:55+08:00",
"lastModified": "2023-10-12T20:38:49+08:00",
"location": "Users/ceacbcb6-40d0-48f1-af23-0990232d570a",
"version": "2023-10-12T20:38:49+08:00"
},
"name": {
"familyName": "bob",
"formatted": "alice bob",
"givenName": "alice"
},
"nickName": "Bob~",
"phoneNumbers": [
{
"value": "18700006475"
}
],
"photos": [
{
"value": "https://cdn.casbin.org/img/casbin.svg"
}
],
"profileUrl": "https://test.com/profile/built-in/scim_test_user2",
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { // The enterprise User extension is identified using this schema URI
"organization": "built-in" // This attribute MUST be passed
},
"userName": "scim_test_user2",
"userType": "normal-user"
}