Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
loginservice
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanmw
loginservice
Commits
b7a61c96
Commit
b7a61c96
authored
Apr 18, 2025
by
xieshaohua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ldap账号登录设置默认角色和新增白名单校验
parent
197e182c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
121 additions
and
3 deletions
+121
-3
ADApi.java
src/main/java/com/keymobile/login/api/ADApi.java
+22
-0
LdapWhiteListRepository.java
.../keymobile/login/persistence/LdapWhiteListRepository.java
+11
-0
LdapWhiteList.java
.../com/keymobile/login/persistence/model/LdapWhiteList.java
+32
-0
ADService.java
src/main/java/com/keymobile/login/service/ADService.java
+7
-1
ADServiceImpl.java
.../java/com/keymobile/login/service/impl/ADServiceImpl.java
+49
-2
No files found.
src/main/java/com/keymobile/login/api/ADApi.java
View file @
b7a61c96
package
com
.
keymobile
.
login
.
api
;
package
com
.
keymobile
.
login
.
api
;
import
com.keymobile.login.persistence.model.LdapInfo
;
import
com.keymobile.login.persistence.model.LdapInfo
;
import
com.keymobile.login.persistence.model.LdapWhiteList
;
import
com.keymobile.login.service.ADService
;
import
com.keymobile.login.service.ADService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
...
@@ -219,4 +220,25 @@ public class ADApi {
...
@@ -219,4 +220,25 @@ public class ADApi {
}
}
@ApiOperation
(
value
=
"保存ldap白名单"
)
@PostMapping
(
value
=
"/saveWhiteList"
)
public
LdapWhiteList
saveWhiteList
(
@RequestBody
LdapWhiteList
whiteList
)
{
return
adService
.
saveWhiteList
(
whiteList
);
}
@ApiOperation
(
value
=
"删除ldap白名单"
)
@DeleteMapping
(
value
=
"/deleteWhiteList"
)
public
void
deleteWhiteList
(
@RequestParam
(
required
=
false
)
String
username
)
{
adService
.
deleteWhiteList
(
username
);
}
@ApiOperation
(
value
=
"获取ldap白名单"
)
@DeleteMapping
(
value
=
"/listWhiteList"
)
public
List
<
LdapWhiteList
>
listWhiteList
()
{
return
adService
.
listWhiteList
();
}
}
}
src/main/java/com/keymobile/login/persistence/LdapWhiteListRepository.java
0 → 100644
View file @
b7a61c96
package
com
.
keymobile
.
login
.
persistence
;
import
com.keymobile.login.persistence.model.LdapWhiteList
;
import
org.springframework.data.repository.CrudRepository
;
import
javax.transaction.Transactional
;
@Transactional
public
interface
LdapWhiteListRepository
extends
CrudRepository
<
LdapWhiteList
,
String
>
{
}
src/main/java/com/keymobile/login/persistence/model/LdapWhiteList.java
0 → 100644
View file @
b7a61c96
package
com
.
keymobile
.
login
.
persistence
.
model
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
/**
* @author xiesh
* @version 1.0.0
* @date 2024/4/26
* @desc
*/
@Entity
@Table
(
name
=
"sso_ldap_white_list"
)
public
class
LdapWhiteList
{
@Id
@Column
(
name
=
"USER_NAME"
,
nullable
=
false
)
private
String
username
;
@Column
(
name
=
"DNAME"
)
private
String
dname
;
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
}
src/main/java/com/keymobile/login/service/ADService.java
View file @
b7a61c96
package
com
.
keymobile
.
login
.
service
;
package
com
.
keymobile
.
login
.
service
;
import
com.keymobile.login.persistence.model.LdapInfo
;
import
com.keymobile.login.persistence.model.LdapInfo
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
com.keymobile.login.persistence.model.LdapWhiteList
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
/**
/**
* @author xiesh
* @author xiesh
...
@@ -24,4 +25,9 @@ public interface ADService {
...
@@ -24,4 +25,9 @@ public interface ADService {
String
login
(
HttpServletRequest
request
,
String
username
,
String
password
)
;
String
login
(
HttpServletRequest
request
,
String
username
,
String
password
)
;
LdapWhiteList
saveWhiteList
(
LdapWhiteList
whiteList
);
void
deleteWhiteList
(
String
username
);
List
<
LdapWhiteList
>
listWhiteList
();
}
}
src/main/java/com/keymobile/login/service/impl/ADServiceImpl.java
View file @
b7a61c96
...
@@ -8,7 +8,9 @@ import com.keymobile.login.exception.LdapException;
...
@@ -8,7 +8,9 @@ import com.keymobile.login.exception.LdapException;
import
com.keymobile.login.logging.LogConstants
;
import
com.keymobile.login.logging.LogConstants
;
import
com.keymobile.login.logging.LogManager
;
import
com.keymobile.login.logging.LogManager
;
import
com.keymobile.login.persistence.LdapInfoRepository
;
import
com.keymobile.login.persistence.LdapInfoRepository
;
import
com.keymobile.login.persistence.LdapWhiteListRepository
;
import
com.keymobile.login.persistence.model.LdapInfo
;
import
com.keymobile.login.persistence.model.LdapInfo
;
import
com.keymobile.login.persistence.model.LdapWhiteList
;
import
com.keymobile.login.service.ADService
;
import
com.keymobile.login.service.ADService
;
import
com.keymobile.login.service.AuthRemoteService
;
import
com.keymobile.login.service.AuthRemoteService
;
import
com.keymobile.login.util.AES
;
import
com.keymobile.login.util.AES
;
...
@@ -17,6 +19,7 @@ import org.slf4j.Logger;
...
@@ -17,6 +19,7 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.MDC
;
import
org.slf4j.MDC
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
...
@@ -46,6 +49,8 @@ public class ADServiceImpl implements ADService {
...
@@ -46,6 +49,8 @@ public class ADServiceImpl implements ADService {
@Autowired
@Autowired
private
LdapInfoRepository
ldapInfoRepository
;
private
LdapInfoRepository
ldapInfoRepository
;
@Autowired
private
LdapWhiteListRepository
ldapWhiteListRepository
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ADApi
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ADApi
.
class
);
private
static
String
DEFAULT_TIME_OUT
=
"5000"
;
private
static
String
DEFAULT_TIME_OUT
=
"5000"
;
...
@@ -63,6 +68,11 @@ public class ADServiceImpl implements ADService {
...
@@ -63,6 +68,11 @@ public class ADServiceImpl implements ADService {
public
static
final
String
LADP_CN
=
"cn"
;
public
static
final
String
LADP_CN
=
"cn"
;
@Value
(
"${ad.defaultRoleId:2}"
)
private
Long
defaultRoleId
;
@Value
(
"${ad.limit:true"
)
private
Boolean
adLimit
;
@Override
@Override
public
LdapInfo
saveLdapInfo
(
LdapInfo
ldapInfo
)
{
public
LdapInfo
saveLdapInfo
(
LdapInfo
ldapInfo
)
{
...
@@ -132,6 +142,9 @@ public class ADServiceImpl implements ADService {
...
@@ -132,6 +142,9 @@ public class ADServiceImpl implements ADService {
@Override
@Override
public
String
login
(
HttpServletRequest
request
,
String
username
,
String
password
)
{
public
String
login
(
HttpServletRequest
request
,
String
username
,
String
password
)
{
String
result
=
null
;
String
result
=
null
;
if
(!
checkWhiteList
(
username
))
{
return
"用户无权访问"
;
}
try
{
try
{
result
=
ldapAuthentication
(
username
,
password
);
result
=
ldapAuthentication
(
username
,
password
);
if
(
StringUtils
.
equals
(
result
,
"ok"
))
{
if
(
StringUtils
.
equals
(
result
,
"ok"
))
{
...
@@ -143,8 +156,15 @@ public class ADServiceImpl implements ADService {
...
@@ -143,8 +156,15 @@ public class ADServiceImpl implements ADService {
toAdd
.
put
(
"dname"
,
ldapUserInfo
.
get
(
LADP_CN
)
==
null
?
username
:
ldapUserInfo
.
get
(
LADP_CN
));
toAdd
.
put
(
"dname"
,
ldapUserInfo
.
get
(
LADP_CN
)
==
null
?
username
:
ldapUserInfo
.
get
(
LADP_CN
));
//不能被匹配的加密字符
//不能被匹配的加密字符
toAdd
.
put
(
"password"
,
"37fa265330ad83eaa879efb12312db6380896cf639"
);
toAdd
.
put
(
"password"
,
"37fa265330ad83eaa879efb12312db6380896cf639"
);
logger
.
info
(
"新增用户:{}"
,
toAdd
);
//添加默认角色
authService
.
addUser
(
toAdd
);
List
<
Map
<
String
,
Object
>>
dataRoleAbstracts
=
new
ArrayList
<>();
Map
<
String
,
Object
>
roleMap
=
new
HashMap
<>();
roleMap
.
put
(
"id"
,
defaultRoleId
);
dataRoleAbstracts
.
add
(
roleMap
);
toAdd
.
put
(
"dataRoleAbstracts"
,
dataRoleAbstracts
);
Map
<
String
,
Object
>
addUser
=
authService
.
addUser
(
toAdd
);
logger
.
info
(
"新增用户:{}"
,
addUser
);
}
}
//设置用户session
//设置用户session
UserDetails
userDetails
=
customizedUserDetailService
.
loadUserByUsername
(
username
);
UserDetails
userDetails
=
customizedUserDetailService
.
loadUserByUsername
(
username
);
...
@@ -167,6 +187,26 @@ public class ADServiceImpl implements ADService {
...
@@ -167,6 +187,26 @@ public class ADServiceImpl implements ADService {
return
result
;
return
result
;
}
}
@Override
public
LdapWhiteList
saveWhiteList
(
LdapWhiteList
ldapWhiteList
)
{
return
ldapWhiteListRepository
.
save
(
ldapWhiteList
);
}
@Override
public
void
deleteWhiteList
(
String
username
)
{
if
(
StringUtils
.
isNotBlank
(
username
))
{
ldapWhiteListRepository
.
deleteById
(
username
);
}
else
{
ldapWhiteListRepository
.
deleteAll
();
}
}
@Override
public
List
<
LdapWhiteList
>
listWhiteList
()
{
return
(
List
<
LdapWhiteList
>)
ldapWhiteListRepository
.
findAll
();
}
private
Map
<
String
,
String
>
searchUserInfoByName
(
String
searchName
)
throws
Exception
{
private
Map
<
String
,
String
>
searchUserInfoByName
(
String
searchName
)
throws
Exception
{
LdapInfo
ldapInfo
=
getLdapInfo
();
LdapInfo
ldapInfo
=
getLdapInfo
();
...
@@ -242,5 +282,12 @@ public class ADServiceImpl implements ADService {
...
@@ -242,5 +282,12 @@ public class ADServiceImpl implements ADService {
return
null
;
return
null
;
}
}
private
Boolean
checkWhiteList
(
String
userName
)
{
if
(!
adLimit
)
{
return
true
;
}
return
ldapWhiteListRepository
.
findById
(
userName
).
isPresent
();
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment