小编Buh*_*ndi的帖子

如何使用HMACSHA1和密钥创建签名以连接到Kayako API

我正在尝试使用apache commons HTTP Client连接到第三方应用程序API.我正在尝试连接的API是http://wiki.kayako.com/display/DEV/REST+API.

API要求我传递API密钥和签名以及用于创建签名的salt.

根据API文档,这些是创建签名的步骤

  1. 生成随机字符串以创建salt(在PHP中,您将使用mt_and()来执行此操作)
  2. 通过使用SHA256散列盐来生成签名,并使用密钥作为密钥(在PHP中,您将使用hash_hmac()来执行此操作)
  3. base64编码签名(在PHP中,你将使用base64_encode()来执行此操作)
  4. URL编码输出(在PHP中,您将使用urlencode()来执行此操作)

更新

根据我得到的回复,我更改了一些代码并使用Kayako创建了一个模拟帐户来测试API

我正在使用以下类来生成签名

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.GeneralSecurityException;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.bouncycastle.util.encoders.Base64Encoder;

public class GenSign2 {
    public static void main(String[] args) throws GeneralSecurityException,
            IOException {
        String secretKey = "M2Y2YjkxZDEtYmNlOC1mYmI0LTkxZTgtOTNiY2RiMDhmN2E2YjExNGUwYjktNGJkYy1jZTM0LWQ1MWYtZGIwYWRlZTE0NGNh";
        String salt = "0123456789";

        String generateHmacSHA256Signature = generateHmacSHA256Signature(salt,
                secretKey);
        System.out.println("Signature: " + generateHmacSHA256Signature);

        String urlEncodedSign = URLEncoder.encode(generateHmacSHA256Signature,
                "UTF-8");

        System.out.println("Url encoded value: " + urlEncodedSign);
    }

    public static String generateHmacSHA256Signature(String data, String key) …
Run Code Online (Sandbox Code Playgroud)

java encryption

7
推荐指数
1
解决办法
3万
查看次数

关于JSF 2的Https,用于受保护的资源和登录

我有一个带有2个属性的托管bean:userName&password(带有各自的getter和setter方法),以及一个login()访问数据库以验证登录凭据的方法.

我的问题是,当用户点击"登录"按钮时,操作必须通过https协议.我如何用JSF 2实现这一目标?

另外,如果我想要保护一些Faces(在https协议下),我该如何实现?是否有过滤器可以让我这样做?

提前致谢.

java https jsf-2 servlet-filters

7
推荐指数
1
解决办法
9102
查看次数

创建一个字节的ArrayList

我想将波形文件中的字节读入数组.由于读取的字节数取决于波形文件的大小,因此我创建了一个最大大小为1000000的字节数组.但这会导致数组末尾出现空值.所以,我想创建一个动态增加的数组,我发现ArrayList是解决方案.但是AudioInputStream类的read()函数只将字节读入字节数组!我如何将值传递给ArrayList?

java bytearray arraylist

7
推荐指数
2
解决办法
7万
查看次数

Delphi中是否存在Java听众原则的等价物?

我对这个很好奇.我知道两种在Delphi中定义事件的方法,使用回调原理和windows消息原理.

但是,消息原则不是面向对象的,并且回调仅适用于一个实例.

我想为一个事件提供一个很好的解决方案,其中两个不同的对象可以在事件触发后执行操作.

在Java中,我可以简单地添加另一个监听器.

有没有人知道Delphi中这个好听众原则的任何等效方法?

java delphi events

7
推荐指数
1
解决办法
1617
查看次数

Spring security oauth 2简单的例子

我尝试基于官方教程Sparklr2/Tonr2实现我自己的示例.一切看起来不错,但是当我从删除web.xml我的Tonr2实施,春季安全过滤器我有例外:

没有为当前请求建立重定向URI

我无法理解我应该使用哪个URL.这是我的代码,用于客户端实现:

<!--apply the oauth client context -->
<oauth:client id="oauth2ClientFilter" />

<!--define an oauth 2 resource for sparklr -->
<oauth:resource id="provider" type="authorization_code" client-id="client" client-secret="secret" 
    access-token-uri="http://localhost:8080/provider/oauth/token" user-authorization-uri="http://localhost:8080/provider/oauth/authorize" scope="read,write" />

<beans:bean id="clientController" class="com.aouth.client.ClientController">
    <beans:property name="trustedClientRestTemplate">
        <oauth:rest-template resource="provider" />
    </beans:property>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)

对于提供者:

<http pattern="/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
    <intercept-url pattern="/oauth/token" access="IS_AUTHENTICATED_FULLY" />
    <anonymous enabled="false" />
    <http-basic />
</http>

<authentication-manager id="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
    <authentication-provider user-service-ref="clientDetailsUserService" />
</authentication-manager>

<bean id="clientDetailsUserService" class="org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService">
    <constructor-arg ref="clientDetails" />
</bean>

<!-- The OAuth2 protected resources …
Run Code Online (Sandbox Code Playgroud)

spring-security oauth-2.0 spring-security-oauth2

7
推荐指数
1
解决办法
3万
查看次数

访问用java编写的Web服务方法时的java.lang.ClassCastException.JAXB

我正在编写一个应用程序,我必须与MS SQL数据库进行交互.在我的应用程序中,我正在创建用于访问数据库表的Web服务(使用javax.jws).我在Web服务中创建一个操作(方法),返回类型为java.lang.Object [] [],如下所示:

@WebMethod(operationName ="get_HistoryInfoByUser")

public java.lang.Object[][] get_HistoryInfoByUser(@WebParam(name = "email_Id")
String email_Id) throws Exception{
   java.lang.Object[][] historyInfo = null;

     // some code here

  return historyInfo;
}
Run Code Online (Sandbox Code Playgroud)

并且为了在我的应用程序中调用Web服务操作(方法),我正在编写以下代码:

public Object[][] get_HistoryInfoByUser(String email_Id) {

      java.util.List<net.java.dev.jaxb.array.AnyTypeArray> historyInfo = null;

    try {

        historyInfo = port.getHistoryInfoByUser(email_Id);

    } catch (Exception_Exception ex) {
        ex.printStackTrace();
    }
       return (Object[][]) historyInfo.toArray();
 }
Run Code Online (Sandbox Code Playgroud)

但我得到一个例外

线程"Thread-8"中的异常java.lang.ClassCastException:[Ljava.lang.Object; 不能转换为[[Ljava.lang.Object;

Web服务操作返回类型是java.util.List(net.java.dev.jaxb.array.AnyTypeArray),我需要返回类型java.lang.Object [] [].

请你能给我任何建议,这将有助于我解决这个问题.

java web-services jaxb

6
推荐指数
1
解决办法
1864
查看次数

在Twitter上使用Twitter api注销?

用户登录我的应用程序与oauth,登出我的应用程序但twitter无法做到,问题是用户twitter帐户是活动的.

当我注销我的应用程序同时注销twitter

twitter api不支持这个动作吗?

twitter

6
推荐指数
2
解决办法
1万
查看次数

tomcat中的空会话路径是什么?

我前一天读过apache tomcat文档,我很困惑emptySessionPath.据我所知,如果设置为true,emptySessionPath则存储在Web应用程序的根文件夹中.请给出正确的术语定义, emptySessionPath如果设置为真和假,会发生什么?

请指导我.谢谢.

java webserver tomcat connector tomcat6

6
推荐指数
2
解决办法
1万
查看次数

为什么一个类实现了Serializable接口?

@Entity
public class Husband implements Serializable {

   @Id
   private int id;

   private String name;

   @OneToOne
   private Wife wife;

}

@Entity
public class Wife implements Serializable {

   @Id
   private int id;

   private String name;

   @OneToOne(mappedBy="wife")
   private Husband husband;

}
Run Code Online (Sandbox Code Playgroud)
  1. 什么是Serializable广义的?
  2. 为什么类实现Serializable接口?
  3. 为什么单独的丈夫成员有@OnetoOne(mappedBy ="妻子"),但妻子成员没有@OnetoOne(mappedBy ="丈夫")

java jpa

6
推荐指数
2
解决办法
2万
查看次数

Java APNS(Apple推送通知服务)错误

我正在尝试使用Java APNS(一个开源项目)向iPhone发送推送通知.但是我收到了一个错误.

我使用.pem文件作为证书.这应该是.p12文件吗?我不确定区别是什么,但我在网上看到这些文件格式之间存在差异.

这是代码:

   ApnsService service =
        APNS.newService()
            .withCert("gpk.pem", "XXXX")
            .withSandboxDestination()
            .build();


    String payload = APNS.newPayload().alertBody("Can't be simpler than this!").build();
    String token = "theTokenIsRemoveHere";
    service.push(token, payload);
Run Code Online (Sandbox Code Playgroud)

这是错误:

Exception in thread "main" com.notnoop.exceptions.InvalidSSLConfig: java.io.IOException: toDerInputStream rejects tag type 45
    at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:102)
    at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:161)
    at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:124)
    at com.geomobsters.cli.ApnsClient.main(ApnsClient.java:12)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.io.IOException: toDerInputStream rejects tag type 45
    at sun.security.util.DerValue.toDerInputStream(DerValue.java:806)
    at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1201)
    at java.security.KeyStore.load(KeyStore.java:1185)
    at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:87)
    ... 8 more
Run Code Online (Sandbox Code Playgroud)

java apple-push-notifications

6
推荐指数
1
解决办法
1万
查看次数