tl; dr:我正在寻找一个可以提供x.509文件和输入PDF的CLI工具,并带有签名的PDF.NodeJS的最佳场景
嗨,您好.我有点沮丧.我正在寻找一种可以使用命令行对PDF文件进行签名的工具.我使用名为handy-signatur.at(来自www.a-trust.at的服务)的在线服务生成x.509证书.
我发现一个页面提到了几个工具,但似乎所有这些工具都已过时,或者我只是为了使它们工作而愚蠢.
我特别尝试过PortableSigner,但是需要Java 6而我无法在Ubuntu(服务器和桌面版)17.04上运行它.
/编辑:我无法使PortableSigner工作,因为Java 6和7不再可用,甚至可能无法安全使用.
是否有任何命令行工具来签署PDF?
非常感谢你们!
将使用CXF3.x构建的JAX-RS服务从weblogic 12.1.3升级到12.2.1后,我面临以下奇怪的问题
<03-ago-2017, 3:22:38,789 PM CEST> <Error> <HTTP> <BEA-101216> <Servlet: "JAX-RS/Jersey#1" failed to preload on startup in Web application: "sife".
A MultiException has 1 exceptions. They are:
1. java.lang.LinkageError: ClassCastException: attempting to castzip:C:/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/sife/845176/war/WEB-INF/lib/javax.ws.rs-api-2.0.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to jar:file:/C:/Oracle/Middleware/Oracle_Home/oracle_common/modules/javax.ws.rs.javax.ws.rs-api.jar!/javax/ws/rs/ext/RuntimeDelegate.class
at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1007)
at org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:962)
at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1054)
at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1046)
at org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:696)
Truncated. see log file for complete stacktrace
Run Code Online (Sandbox Code Playgroud)
请注意,我使用的是CXF,而不是Jersey,但似乎Weblogic正在尝试使用它(12.1.3不会发生这种情况).我按照以下建议在配置文件中禁用了它:https://jerometambo.github.io/blog/2016/12/13/How-to-use-CXF-3x-implementation-of-JAX-RS-20-REST-与-WebLogic的12c.html
使用默认配置,Weblogic希望使用其内部实现(JAX-RS 2.0和序列化)来部署REST Web服务(错误500):
META-INF/weblogic的-application.xml中
<weblogic-application xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-application
http://xmlns.oracle.com/weblogic/weblogic-application/1.8/weblogic-application.xsd">
<prefer-application-packages>
<package-name>javax.ws.rs.*</package-name>
<package-name>com.fasterxml.jackson.*</package-name>
<package-name>weblogic.jaxrs.api.client.*</package-name>
<package-name>weblogic.jaxrs.internal.api.*</package-name>
<package-name>weblogic.jaxrs.dispatch.*</package-name>
<package-name>weblogic.jaxrs.monitoring.util.*</package-name>
</prefer-application-packages>
</weblogic-application>
Run Code Online (Sandbox Code Playgroud)
WEB-INF/weblogic.xml中
<weblogic-web-app
xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于JWT以及如何通过JWT创建"无状态"会话的内容.我理解的要点是,由于签名和过期,您实际上可以发送整个会话以由客户端保存,并且服务器不必维护数据库来记住会话.
我不明白的是,如果您的用户需要注销,或者您需要在到期前使会话无效,会发生什么?
从技术上讲,您可以指示浏览器从客户端删除它,但您无法确定这实际发生了.令牌本身在技术上仍然有效,如果没有遵循删除说明,它仍然可以使用.
这种理解是否正确?如果是这样,这对客户端会话管理来说不是一个大错吗?除了让服务器存储会话或缩短过期时间之外,还有什么方法可以克服这个问题吗?
我正在使用弹簧样本发送内嵌图像.它有效但gmail也将图像显示为附件.怎么避免呢?
代码非常简单.
public class Email {
public static MimeMessagePreparator getContentAsInlineResourceMessagePreparator(final String to) {
MimeMessagePreparator preparator = new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
helper.setSubject("Email with inline image");
helper.setFrom("fake@yourshop.com");
helper.setTo(to);
String content = "Dear pedrofb...";
helper.setText("<html><body><p>" + content + "</p><img src='cid:company-logo'></body></html>", true);
helper.addInline("company-logo", new ClassPathResource("logo.png"));
}
};
return preparator;
}
public final static void main (String argv[]){
//Basic SMTP configuration
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(host);
mailSender.setPort(port);
MimeMessagePreparator preparator …
Run Code Online (Sandbox Code Playgroud) 我是JWT的新手,最后我继承了一个使用JWT的代码库.现在我遇到了一些非常根本的问题,我找不到任何答案.这个问题不是基于代码的,所以请耐心等待.
让我们说我的JWT令牌有效期为4小时.这是我的要求/限制
如果用户工作时间为3小时59分钟.他们的会话应该延长2小时,不应该要求他们重新输入凭证.
客户端java脚本不得以任何方式缓存用户凭据.
可以使用新的JWT令牌刷新JWT令牌......但是您不能在服务器上的每个请求上执行此操作.因此,当时机成熟时,客户端必须能够智能刷新JWT令牌.您不得尝试在对应用程序发出的每个请求上发出新令牌,因为我们最终会遇到在会话过程中生成1000个活动令牌并且所有活动令牌都处于活动状态的情况.这使得注销要求更加困难.
用户点击退出后.JWT令牌不再可用.即使它的寿命仍然有效.
如果发生退出.发布的所有令牌(作为会话扩展的一部分)应该失效.不只是最后一个.
我开始阅读有关JWT的内容,但似乎JWT无法满足我的要求.使用会话ID方法很容易满足这些要求.但我还不想放弃JWT.
我正在努力验证Azure AD令牌签名。
当我在下面的“ jwks_uri”字段中查找正确的键描述时
https://login.microsoftonline.com/common/.well-known/openid-configuration
我检查所属密钥数据。
我尝试使用“ n”-模数和“ e”字段来生成用于签名验证的公钥,但最终出现错误:
BASE64Decoder decoder = new BASE64Decoder();
byte[] modulusBytes = decoder.decodeBuffer(n);
byte[] exponentBytes = decoder.decodeBuffer(e);
BigInteger modulusInt = new BigInteger(1, modulusBytes);
BigInteger exponentInt = new BigInteger(1, exponentBytes);
try {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPublicKeySpec publicSpec = new RSAPublicKeySpec(modulusInt, exponentInt);
RSAPublicKey pubKey = (RSAPublicKey)keyFactory.generatePublic(publicSpec);
Jwt<Header, String> c = Jwts.parser().setSigningKey(pubKey).parsePlaintextJwt(token);
} catch (Exception ex) {
ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
安慰:
io.jsonwebtoken.SignatureException: Unable to verify RSA signature using configured PublicKey. Signature length not correct: got 256 but was …
Run Code Online (Sandbox Code Playgroud) HS256和HS512加密算法之间是否存在实际差异,或者与已经牢不可破的密钥相比,是否存在更长的密钥冗余的附加安全性?我应该使用哪一个来加密JWT令牌?
甚至可以在auth0的java JWT中使用HS512加密吗?
以下是我的要求:
下面是我试图解码证书的代码:
public void executeTask(InputStream arg0, OutputStream arg1) throws SomeException{
try{
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(arg0));
String orgContent = "", splitData = "", signContent = "", certContent = "";
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(arg0);
doc.getDocumentElement().normalize();
NodeList originalContent = doc.getElementsByTagName("OrgContent");
Element originalElement = (Element)originalContent.item(0);
NodeList textOrgContent = originalElement.getChildNodes();
orgContent = ((Node)textOrgContent.item(0)).getNodeValue().trim();
NodeList signature = doc.getElementsByTagName("Signature");
Element signatureElement = (Element)signature.item(0);
NodeList signatureContent = signatureElement.getChildNodes();
signContent = ((Node)signatureContent.item(0)).getNodeValue().trim(); …
Run Code Online (Sandbox Code Playgroud) 我想迭代CSR矩阵的行并将每个元素除以行的总和,类似于此处:
我的问题是我正在处理一个大矩阵:(96582,350138)
当从链接的帖子应用操作时,它会膨胀我的记忆,因为返回的矩阵是密集的.
所以这是我的第一次尝试:
for row in counts:
row = row / row.sum()
Run Code Online (Sandbox Code Playgroud)
不幸的是,这根本不会影响矩阵,所以我想出了第二个想法来创建一个新的csr矩阵并使用vstack连接行:
from scipy import sparse
import time
start_time = curr_time = time.time()
mtx = sparse.csr_matrix((0, counts.shape[1]))
for i, row in enumerate(counts):
prob_row = row / row.sum()
mtx = sparse.vstack([mtx, prob_row])
if i % 1000 == 0:
delta_time = time.time() - curr_time
total_time = time.time() - start_time
curr_time = time.time()
print('step: %i, total time: %i, delta_time: %i' % (i, total_time, delta_time))
Run Code Online (Sandbox Code Playgroud)
这很好用,但经过一些迭代后,它变得越来越慢:
step: 0, total time: 0, …
Run Code Online (Sandbox Code Playgroud) 我在应用程序中使用JWT进行登录身份验证过程。要生成令牌,我正在使用:
Jwts.builder().setSubject(username).signWith(SignatureAlgorithm.HS512, MacProvider.generateKey()).compact();
Run Code Online (Sandbox Code Playgroud)
生成的令牌:
eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOlaJlaG91c2VAZGV2ZXJldXgub3JnIn0.5SX-aU-p_RlfC3CZa-YXnQu_YR7RsG2Xfim3LOmlqxjzrIyZizQFKZ8H
当我在jwt.io调试器中解码此令牌时,它告诉我无效的签名。我无法找到此失败的原因,因为我可以在要验证的有效负载中看到用户名。有人可以指出我的问题吗?我需要更改代码中的任何内容吗?