首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在GlassFish中使用JSR 196认证获得角色?

如何在GlassFish中使用JSR 196认证获得角色?
EN

Stack Overflow用户
提问于 2010-02-01 10:13:57
回答 2查看 2K关注 0票数 2

我希望使用符合JSR 196的自定义身份验证模块,在GlassFish 3中,接口javax.security.auth.message.ServerAuth有以下方法:

代码语言:javascript
代码运行次数:0
运行
复制
AuthStatus validateRequest(
  MessageInfo messageInfo,
  javax.security.auth.Subject clientSubject,
  javax.security.auth.Subject serviceSubject
)

AuthStatus可以是像失败或成功这样的几个常量之一。

问题是:如何使用JSR 196从“角色数据库”获取角色?

示例:服务器接收带有SSO令牌(例如CAS令牌)的请求,检查令牌是否有效,使用角色填充远程用户对象,角色通过JDBC从数据库中获取,或通过http从REST服务中获取。

角色取取是否在JSR 196的范围内?如何实现这一目标?

我是否必须使用JSR 196和JSR 115一起使用自定义身份验证和自定义角色源?

EN

回答 2

Stack Overflow用户

发布于 2011-06-24 09:52:38

这是我的JSR-196OpenID实现中的一个代码示例。该方法设置当前CallerPrincipal的字符串数组中存储的角色:

代码语言:javascript
代码运行次数:0
运行
复制
private boolean setCallerPrincipal(String caller, Subject clientSubject) {
            boolean rvalue = true;
            boolean assignGroups = true;
            // create CallerPrincipalCallback
            CallerPrincipalCallback cPCB = new CallerPrincipalCallback(
                            clientSubject, caller);
            if (cPCB.getName() == null && cPCB.getPrincipal() == null) {
                    assignGroups = false;
            }
            try {
                    handler.handle((assignGroups ? new Callback[] {
                                    cPCB,
                                    new GroupPrincipalCallback(cPCB.getSubject(),
                                                    assignedGroups) } : new Callback[] { cPCB }));
                    logInfo(DEBUG_JMAC, "jmac.caller_principal:" + cPCB.getName() + " "
                                    + cPCB.getPrincipal());
            } catch (Exception e) {
                    // should not happen
                    logger.log(Level.WARNING, "jmac.failed_to_set_caller", e);
                    rvalue = false;
            }
            return rvalue;
    }

我在validateRequest()方法期间调用此方法。您可以在这里看到完整的代码:http://code.google.com/p/openid4java-jsr196/source/browse/trunk/src/main/java/org/imixs/openid/openid4java/OpenID4JavaAuthModule.java

另外,此页面将有帮助:http://code.google.com/p/openid4java-jsr196/

票数 1
EN

Stack Overflow用户

发布于 2010-03-17 17:58:04

下面是我如何将用户映射到角色的方法:

我的web.xml中有3个角色,我的sun-web.xml中也有3个角色到组的映射,它映射了几个组的角色。然后,我有一个具有表用户的数据库,其中有一个名为"group“的列。该组对应于映射到角色的组。我还使用了基于JSR 196的自定义auth模块和OpenID.因此,基本上,每当用户登录到他们的组时,就从db读取,然后我的应用程序为他们分配相应的角色。所有这些都是使用J2EE的标准声明性安全模型完成的。

对于我的自定义auth模块,我使用了一个名为AuthenticRoast的库,这使得事情变得相当简单。

这里还有一个相关的帖子..。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2175892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档