java group类_Java WsGroup类代码示例

GrouperWS权限验证
本文介绍了一种通过GrouperWS服务获取用户所属组信息,并据此判断服务访问权限的方法。该方法首先从GrouperWS获取用户的所有组成员资格,然后将这些信息整合到CAS属性中以决定是否允许服务访问。

import edu.internet2.middleware.grouperClient.ws.beans.WsGroup; //导入依赖的package包/类

@Override

public boolean doPrincipalAttributesAllowServiceAccess(final String principal, final Map principalAttributes) {

final Map allAttributes = new HashMap<>(principalAttributes);

final List grouperGroups = new ArrayList<>();

final WsGetGroupsResult[] results;

try {

final GcGetGroups groupsClient = new GcGetGroups().addSubjectId(principal);

results = groupsClient.execute().getResults();

} catch (final Exception e) {

LOGGER.warn("Grouper WS did not respond successfully. Ensure your credentials are correct "

+ ", the url endpoint for Grouper WS is correctly configured and the subject " + principal

+ " exists in Grouper.", e);

return false;

}

if (results == null || results.length == 0) {

LOGGER.warn("Subject id [{}] could not be located. Access denied", principal);

return false;

}

for (final WsGetGroupsResult groupsResult : results) {

if (groupsResult.getWsGroups() == null || groupsResult.getWsGroups().length == 0) {

LOGGER.warn("No groups could be found for subject [{}]. Access denied", groupsResult.getWsSubject().getName());

return false;

}

for (final WsGroup group : groupsResult.getWsGroups()) {

final String groupName = constructGrouperGroupAttribute(group);

LOGGER.debug("Found group name [{}] for [{}]", groupName, principal);

grouperGroups.add(groupName);

}

}

LOGGER.debug("Adding [{}] under attribute name [{}] to collection of CAS attributes",

grouperGroups, GROUPER_GROUPS_ATTRIBUTE_NAME);

allAttributes.put(GROUPER_GROUPS_ATTRIBUTE_NAME, grouperGroups);

return super.doPrincipalAttributesAllowServiceAccess(principal, allAttributes);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值