- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个 java 类,以便根据本地 SASL 对用户进行身份验证。我的 saslauthd 配置是这样的:
$ cat /etc/sysconfig/saslauthd
# Directory in which to place saslauthd's listening socket, pid file, and so
# on. This directory must already exist.
SOCKETDIR=/run/saslauthd
# Mechanism to use when checking passwords. Run "saslauthd -v" to get a list
# of which mechanism your installation was compiled with the ablity to use.
MECH=pam
# Additional flags to pass to saslauthd on the command line. See saslauthd(8)
# for the list of accepted flags.
FLAGS="-t 1"
基本上,它会重定向针对 PAM 的身份验证。所以,如果我正在做这样的测试。
testsaslauthd -s login -u <user> -p <password>
0: OK "Success."
一切正常。
我现在想通过 Java 来管理这个机制,所以我编译了这样的东西:
import java.util.Arrays;
import java.util.List;
import java.io.*;
public class PamAuthenticator {
public static void main(String args[]) {
String s = null;
try {
Process p = Runtime.getRuntime().exec("testsaslauthd -s "+args[2]+" -u "+args[0]+" -p "+args[1]);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
System.exit(0);
}
catch (IOException e) {
System.out.println("Exception: ");
e.printStackTrace();
System.exit(-1);
}
}
}
这是正常工作的:
$ java -cp .:* PamAuthenticator <user> <password> login
0: OK "Success."
我的问题是我不想执行 testsaslauthd
命令,因为这只是一个测试命令。为了使用 Java 再次尝试 SASL 身份验证,我可以做一些更好更聪明的事情吗?
最佳答案
你是在正确的轨道上,不要使用上面的代码。除了作为测试解决方案外,它还会引入严重的安全问题:command injection
.
从 Java 1.6
开始,有一个名为 SaslClient
的接口(interface).这正是您所需要的。一个example在 JDK8 上它的版本:
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.NameCallback;
import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
import javax.security.sasl.Sasl;
import javax.security.sasl.SaslClient;
import javax.security.sasl.SaslException;
import java.util.HashMap;
public class Test {
public static void main(String[] args) throws SaslException {
String userName = "username";
String password = "password";
SaslClient saslClient = Sasl.createSaslClient(new String[]{"PLAIN"},
null, null, null, new HashMap<>(), callbacks -> {
for (final Callback callback : callbacks) {
if (callback instanceof NameCallback) {
NameCallback.class.cast(callback).setName(userName);
continue;
}
if (callback instanceof PasswordCallback) {
PasswordCallback.class.cast(callback).setPassword(password.toCharArray());
continue;
}
throw new UnsupportedCallbackException(callback);
}
});
}
}
当然你应该改变用户名和密码的来源。
关于针对本地 SASL 的 Java 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53778398/
我有操作系统 Red Hat Enterprise Linux Server release 7.4 (Maipo) 和 python Python 2.7.13 :: Anaconda 4.4.0
我在我的 Bluemix 应用程序中安装 sasl 时遇到以下错误: Installing collected packages: sasl, thrift-sasl
我正在处理有关 IM 的一些事情。它涉及XMPP。我在 Android 上开发了一个应用程序,所以我使用了 aSmack。我想登录 google talk,在这里(链接如下) https://deve
注意:我无法安装 libsasl2-dev,因为我没有管理员权限。 我构建了 cyrus-sasl-2.1.26.tar.gz: ./configure --prefix=/home/username
我对上述主题有几个问题,请你能帮助理解这些事情。 SASL/Plain 可以与 SSL 一起使用,也可以不与 SSL 一起使用。因此,如果不使用 SSL,则数据将被加密 和安全? 使用 SSL 的 S
尝试将 Message Hub Bluemix 服务与 Node 一起使用时,我收到错误:无法初始化 SASL 身份验证:SASL 握手失败(启动 (-4)):SASL(-4):没有可用机制:没有找到
我正在尝试将新用户添加到 SASL 数据库: saslpasswd2 -a memcached -c . 一旦我重复密码,我会收到以下错误: saslpasswd2: generic failur
我正在做一个涉及身份验证的项目,我不太明白 SASL 和 gssapi 之间的区别。 gssapi 是否在 SASL 的掩护下使用?我可以在没有 SASL 的情况下使用 gssapi 吗?正确的做法是
我正在尝试设置 SVN 以针对 ActiveDirectory 进行身份验证。我知道如果您将 SVN 设置为使用 Apache 提供服务,这是可能的,但这样做会引入太多开销,并且 SVN 运行速度太慢
为什么导入 javax.security.sasl.Sasl;不适用于 Android ???? 最佳答案 这不是 Google Android SDK 团队决定提供的 sun jdk 的一部分。支持
我已经在我的系统中配置了 svn 服务器,并为使用 SASL MD5 验证用户进行了以下配置。我在 svnserve.conf 中做了以下更改 [general] anon-access = no
我尝试在 Spring Boot 项目中设置一个 Mongo DB。我在 application.yml 中设置了一个 uri: spring: data: mongodb:
在我的代码中,在创建 TIdIMAP4 连接之前,我设置了一大堆 SASL 机制,希望按照规定的“最好到最差”顺序,如下所示: IMAP.SASLMechanisms.Add.SASL := mIdS
我们在 Windows Server 2008 上运行 RabbitMq 3.6.2 和 Erlang 17.4。我们在 sasl 日志中一遍又一遍地看到以下记录。它偶尔发生(每隔几个小时),没有特定
当我的应用程序崩溃时,我会收到一份需要 5 分钟滚动浏览的崩溃报告。处理这个问题的最佳方法是什么? 最佳答案 您可以将故障转储通过管道传输到文件。重要信息可能在顶部。 您可以按照 Hynek 上面所说
与许多 RabbitMQ 用户一样,我在 RabbitMQ 节点上看到一些大的 [MACHINE_NAME]-sasl.log 文件,除了 =PROGRESS REPORT==== 条目外什么都不包含
CentOS6.6、Postfix、dovecot 2.0.9 和 MySQL 5.1.73 dovecot 配置(/etc/dovecot/dovecot-sql.conf.ext): driver
我正在尝试制作一个 java 类,以便根据本地 SASL 对用户进行身份验证。我的 saslauthd 配置是这样的: $ cat /etc/sysconfig/saslauthd # Directo
我正在尝试在 ec2 两个实例上设置 zookeeper。如给定 here和 here . 我正在尝试运行因错误而失败的 zookeeper: 命令:bin/zkCli.sh -server loca
在 Zookeeper 和代理身份验证上启用 SASL 时,我遇到以下错误。 [2017-04-18 15:54:10,476] DEBUG Size of client SASL token: 0
我是一名优秀的程序员,十分优秀!