时间:2026-01-06 14:53
人气:
作者:admin
正常情况下,对接第三方IDP之后,在第三方IDP登录后重定向到wso2平台,然后用户就完成了初始化,并且为用户完成了默认应用的建立;如果希望在自己的用户后,手动为用户处理到wso2平台的用户同步,而不需要用户登录后再同步信息,就需要用到几个项目的用户处理流程了
wso2-extensions/identity-governance源码稍微改一下// org.wso2.carbon:org.wso2.carbon.user.core-4.9.0.jar
// addUser()
if (!checkUserNameValid(userStore.getDomainFreeName()) &&
!UserCoreUtil.getSkipUsernamePatternValidationThreadLocal()) {
}

注释掉这个验证规则

curl \
-X POST 'https://test-apim.pkulaw.com/api/identity/user/v1.0/me' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic YWRtaW46YWRtaW4=' \
-d '{
"user": {
"username": "0007aaa6-cc4c-4428-a026-a4ddfec2c965",
"realm": "PRIMARY",
"password": "Password12!",
"claims": [
{
"uri": "http://wso2.org/claims/givenname",
"value": "kim"
},
{
"uri": "http://wso2.org/claims/emailaddress",
"value": "kim.anderson@gmail.com"
}
{
"uri": "http://wso2.org/claims/roles",
"value": "Internal/subscriber "
}
]
}
}'
返回下面状态,或者直接返回HTTP 201(无返回值)
{
"code": "USR-02003",
"message": "Successful user self registration. Account verification not required.",
"notificationChannel": null
}
201,并且用户会自动添加下面3个角色
通过api/am/devportal/applications接口获取用户应用时,如果用户还没有建立应用,系统会为它添加一个默认的应用,这是wso2内部实现的
模拟当前用户登录,并获取token
curl \
-X POST 'https://test-apim.pkulaw.com/oauth2/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'username=kim2' \
--data-urlencode 'password=Password12!' \
--data-urlencode 'scope=apim:subscribe' \
--data-urlencode 'client_id=uFZG4jF7VloJc4LEwiYIcofNb3ka' \
--data-urlencode 'client_secret=GFGPfRa961aD4M_xCL3n6I54t7Ea' \
-k
返回
{
"access_token": "9953e98a-08db-39fa-9390-63ef5cab256c",
"scope": "apim:subscribe",
"token_type": "Bearer",
"expires_in": 3600
}
获取自己的应用,如果没有应用,系统会添加一个默认应用
GET https://test-apim.pkulaw.com/api/am/devportal/applications
返回
{
"count": 1,
"list": [
{
"applicationId": "781f3363-8fdc-4c32-8ebf-0f0e8d6846d6",
"name": "tes",
"throttlingPolicy": "Unlimited",
"description": "test",
"status": "APPROVED",
"groups": [
],
"subscriptionCount": 0,
"attributes": {
},
"owner": "0007aaa6-cc4c-4428-a026-a4ddfec2c965",
"tokenType": "DEFAULT",
"createdTime": "1767676614000",
"updatedTime": "1767676614000"
}
],
"pagination": {
"offset": 0,
"limit": 25,
"total": 2,
"next": "",
"previous": ""
}
}
wso2是一个非常庞大的框架,单从对用户同步这块小需求,就涉及到了底层代码的修改,这个小需求,我拉取分析的项目有几个,但最终调整代码的只有carbon-kernel项目
作者:仓储大叔,张占岭,
荣誉:微软MVP
QQ:853066980
支付宝扫一扫,为大叔打赏!
