- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发TAI
,它必须在WebSphere Portal 中授权用户。
我的 TAI
使用 OpenID
Connect 获取有关用户的所有信息,我想构建一些上下文,将其提供给 WAS 并告诉 WAS 他必须信任此上下文没有本地帐户。
如何在没有本地存储库中的用户帐户的情况下在 TAI
中对用户进行身份验证?
更新:
代码:
String userid = "bob";
String uniqueid = "bob";
Hashtable hashtable = new Hashtable();
hashtable.put(AttributeNameConstants.WSCREDENTIAL_UNIQUEID, uniqueid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_SECURITYNAME, userid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_CACHE_KEY, uniqueid+"MyCustom");
Subject subject = new Subject();
subject.getPublicCredentials().add(hashtable);
return TAIResult.create(HttpServletResponse.SC_OK, "ignored", subject);
日志:
[25.03.15 20:16:33:521 AMT] 00000043 ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl initialize FFDC0009I: FFDC opened incident stream file WebSphere_Portal_00000043_15.03.25_20.16.33_0.txt
[25.03.15 20:16:33:537 AMT] 00000043 ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC closed incident stream file WebSphere_Portal_00000043_15.03.25_20.16.33_0.txt
[25.03.15 20:16:33:677 AMT] 00000043 StorageApi E com.ibm.wps.policy.commands.StorageApi StorageApi EJQAB0064E: A Null argument was passed to the StorageApi constructor.
[25.03.15 20:16:33:724 AMT] 00000043 PolicyService E com.ibm.wps.policy.services.PolicyService Error Occured while creating storageAPI EJQAB0064E: A Null argument was passed to the StorageApi constructor.
FFDC:
------Start of DE processing------ = [3/25/15 20:16:33:474 AMT] , key = com.ibm.websphere.wim.exception.PropertyNotDefinedException com.ibm.ws.security.auth.ContextManagerImpl.runAs 4153
Exception = com.ibm.websphere.wim.exception.PropertyNotDefinedException
Source = com.ibm.ws.security.auth.ContextManagerImpl.runAs
probeid = 4153
Stack Dump = com.ibm.websphere.wim.exception.PropertyNotDefinedException: CWWIM0514W The 'dn' property is not defined.
对于这个错误,我发现this information .
但我不明白他们想要我这样做......
描述:
我有 FederatedRepositories,其中只有一个 LDAP 存储库。
更新#2:
我在 WAS 8.5.5.2 上制作了这样的 TAI,没有错误,只是白屏。我尝试使用组“wpsadmins”来验证用户“bob”。 FederatedRepositories 具有一个基于文件的内置存储库。
更新#3:
我为 WAS 编写了自定义应用程序,其中有一个按钮,可以向 Servlet 发出 POST 请求。
部分代码:
if (req.getRemoteUser() == null) {
req
.setAttribute("errorMessage",
"<b>Error: Please log in before accessing PrintUserInfo.<b>");
RequestDispatcher disp = getServletContext().getRequestDispatcher(
"/login.jsp");
disp.forward(req, resp);
return;
}
resp.setContentType("text/html");
PrintWriter out = new PrintWriter(resp.getOutputStream());
String id = WSSubject.getCallerPrincipal();
out.println("The WAS Subject layer thinks you are " + id);
Context ic = new InitialContext();
Object objRef = ic.lookup("UserRegistry");
UserRegistry userReg = (UserRegistry) PortableRemoteObject.narrow(
objRef, UserRegistry.class);
out.println("<BR><BR>The user registry says your display name is: "
+ userReg.getUserDisplayName(req.getUserPrincipal()
.getName()));
Subject subject = WSSubject.getCallerSubject();
Set credSet = subject.getPublicCredentials(WSCredential.class);
//should be impossible.
if (credSet.size() > 1) {
System.out
.println("Expected only one WSCredential in Subject set");
throw new Exception("Expected one WSCredential, found "
+ credSet.size());
}
if (credSet.isEmpty()) {
System.out.println("Credential set is empty");
throw new Exception("Found no credentials");
}
//get one and only one element of Set
Iterator iter = credSet.iterator();
WSCredential creds = (WSCredential) iter.next();
out.println("<BR><BR>Looking into your Subject your userid is "
+ creds.getSecurityName());
out.println("<BR><BR>Looking into your Subject your uniqueid is "
+ creds.getUniqueSecurityName());
out
.println("<BR><BR>Looking into your Subject I see these groups: ");
//List groups = helper.getGroups();
List groups = creds.getGroupIds();
iter = groups.iterator();
while (iter.hasNext()) {
String gid = (String) iter.next();
out.println("<BR>Group ID: " + gid);
}
新版本的 TAI:
String userid = "alisa";
String uniqueid = "bob";
// add admin group
// stash in hashtable
Hashtable hashtable = new Hashtable();
try {
InitialContext ctx = new InitialContext();
UserRegistry reg =(UserRegistry)ctx.lookup("UserRegistry");
String wpsadminsGroupUniqueId = reg.getUniqueGroupId("wpsadmins");
List<String> groups = new ArrayList<String>();
groups.add(wpsadminsGroupUniqueId);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_GROUPS, groups);
} catch (Exception e) {
System.out.println("EXCEPTION IN TAI");
e.printStackTrace();
}
hashtable.put(AttributeNameConstants.WSCREDENTIAL_UNIQUEID,uniqueid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_SECURITYNAME,userid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_CACHE_KEY,uniqueid+"MyCustom");
Subject subject = new Subject();
subject.getPublicCredentials().add(hashtable);
return TAIResult.create(HttpServletResponse.SC_OK, "ignored", subject);
因此,我从主题获得了我的凭据,包括 userId、uniqueId 和来自 LDAP 的组。
结果:
The WAS Subject layer thinks you are alisa
The user registry says your display name is:
Looking into your Subject your userid is alisa
Looking into your Subject your uniqueid is bob
Looking into your Subject I see these groups:
Group ID: group:domain:port/cn=wpsadmins,cn=CN,ou=OU,o=O,o=O,c=ru
更新 #4
我在 TAI 中添加了一些组,并且比我在 Portal 中授权的组(我认为),但我只看到白屏,没有任何内容。怎么了?
更新 #5
WPS 给了我一个异常(exception):
[26.03.15 18:47:41:006 AMT] 0000004e DefaultLoginF E com.ibm.wps.auth.impl.DefaultLoginFilter doLoginWithExceptions WpsException occured: com.ibm.wps.services.authentication.exceptions.UserRetrieveException: EJPSD0008E: Exception occurred while retrieving the user [null] from the user registry.
最佳答案
您需要创建完整的主题,更多详细信息请查看Advanced authentication in WebSphere Application Server .
简而言之,您需要使用类似的代码:
String userid = "bob";//get from request
String uniqueid = "bob";
// stash in hashtable
Hashtable hashtable = new Hashtable();
hashtable.put(AttributeNameConstants.WSCREDENTIAL_UNIQUEID,uniqueid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_SECURITYNAME,userid);
// hashtable.put(AttributeNameConstants.WSCREDENTIAL_GROUPS,groups);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_CACHE_KEY,uniqueid+"MyCustom");
Subject subject = new Subject();
subject.getPublicCredentials().add(hashtable);
return TAIResult.create(HttpServletResponse.SC_OK, "ignored", subject);
关于java - 在 TAI 中以编程方式验证用户身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236326/
我正在使用SQL Server 2008 R2,并且想创建一个触发器。 对于每个添加(仅添加),将像这样更新一列: ABC-CurrentYear-AutoIncrementCode 例子: ABC-
是否可以在显示最终一致性的数据存储中创建/存储用户帐户? 似乎不可能在没有一堆架构复杂性的情况下管理帐户创建,以避免可能发生具有相同 UID(例如电子邮件地址)的两个帐户的情况? 最终一致性存储的用户
您好, 我有一个带有 Identity 的 .NetCore MVC APP并使用 this指导我能够创建自定义用户验证器。 public class UserDomainValidator : IU
这与以下问题相同:HiLo or identity? 我们以本站的数据库为例。 假设该站点具有以下表格: 帖子。 投票。 注释。 使用它的最佳策略是什么: 身份 - 这是更常见的。 或者 HiLo -
我想将 Blazor Server 与 ASP.NET Identity 一起使用。但我需要使用 PostgreSQL 作为用户/角色存储,因为它在 AWS 中。 它不使用 EF,这是我需要的。 我创
我正在开发一个 .NET 应用程序,它可以使用 Graph API 代表用户发送电子邮件。 提示用户对应用程序进行授权;然后使用获取的访问 token 来调用 Graph API。刷新 token 用
我使用 ASP.NET 身份和 ClaimsIdentity 来验证我的用户。当用户通过身份验证时,属性 User.Identity 包含一个 ClaimsIdentity 实例。 但是,在登录请求期
所以我在两台机器上都安装了 CYGWIN。 如果我这样做,它会起作用: ssh -i desktop_rsa root@remoteserver 这需要我输入密码 ssh root@remoteser
我尝试在 mac osx 上的终端中通过 telnet 连接到 TOR 并请求新身份,但它不起作用,我总是收到此错误消息: Trying 127.0.0.1... telnet: connect to
我正在开发一个 .NET 应用程序,它可以使用 Graph API 代表用户发送电子邮件。 提示用户对应用程序进行授权;然后使用获取的访问 token 来调用 Graph API。刷新 token 用
我正在开发一项服务,客户可以在其中注册他们的 webhook URL,我将发送有关已注册 URL 的更新。为了安全起见,我想让客户端(接收方)识别是我(服务器)向他们发送请求。 Facebook和 G
在 Haskell 中,有没有办法测试两个 IORef 是否相同?我正在寻找这样的东西: IORef a -> IORef a -> IO Bool 例如,如果您想可视化由 IORef 组成的图形,这
我是 .NET、MVC 和身份框架的新手。我注意到身份框架允许通过注释保护单个 Controller 操作。 [Authorize] public ActionResult Edit(int? Id)
我有一列具有身份的列,其计数为19546542,我想在删除所有数据后将其重置。我需要类似ms sql中的'dbcc checkident'这样的内容,但在Oracle中 最佳答案 在Oracle 12
这是我用来创建 session 以发送电子邮件的代码: props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enabl
我想了解 [AllowAnonymous] 标签的工作原理。 我有以下方法 [HttpGet] public ActionResult Add() { return View(); } 当我没
在使用沙盒测试环境时,PayPal 身份 token 对某些人显示而不对其他人显示的原因是否有任何原因。 我在英国使用 API,终生无法生成或找到 token 。 我已经遵循协议(protocol)并
我对非常简单的事情有一些疑问:IDENTITY。我尝试在 phpMyAdmin 中创建表: CREATE TABLE IF NOT EXISTS typEventu ( typEventu
习语 #1 和 #5 是 FinnAPL Idiom Library两者具有相同的名称:“Progressive index of (without replacement)”: ((⍴X)⍴⍋⍋X⍳
当我第一次在 TFS 中设置时,我的公司拼错了我的用户名。此后他们将其更改为正确的拼写,但该更改显然未反射(reflect)在 TFS 中。当我尝试 checkin 更改时,出现此错误: 有没有一种方
我是一名优秀的程序员,十分优秀!