Java에서 OpenID 1.1 공급자를 구현했지만 associate
의 스마트 클라이언트에 문제가 있습니다. 다른 서명이 있습니다. check_authentication
에 의존하는 멍청한 클라이언트는 정상적으로 작동합니다. 특히, 나는 라이브 저널에 대한 테스트입니다 그것은 반환 계속 :assoc_handle을 기반으로 OpenID 1.1 시그널을 생성하는 방법은 무엇입니까?
signature_mismatch을 : 이전 협회 ID 공급자 응답을 무효화.
내 HMAC()
기능의 본문은 다음과 같습니다 HMAC()
를 호출
public static byte[] HMAC(byte[] secret, String token_contents) {
SecretKey sk = new SecretKeySpec(secret, "HMACSHA1");
Mac m = Mac.getInstance(sk.getAlgorithm());
m.init(sk);
return m.doFinal(token_contents.getBytes("UTF-8"));
}
token_contents
는 checkid_setup
에 대한 처리시 다음 코드에서 온다. 즉, 서명은 mode,identity,return_to
에서 이루어지며 이는 signed
응답 매개 변수의 값이기도합니다.
String token_contents = String.format(
"mode:id_res\nidentity:%s\nreturn_to:%s\n",
identity, return_to);
그리고 마지막 secret
(예 사양에 따라 secret(assoc_handle)
통해 검색) 초기 associate
호출이 리턴 mac_key
의베이스 64 디코딩 된 버전이다. enc_mac_key
을 제대로 해독 할 수 있는지 확인하기 위해 상당한 양의 테스트를 수행했습니다.
의견이 있으십니까? 이 일에 눈부신 문제가 있습니까?
또는 ... 누구나 알고있는 OpenID 1.1을 알고 그 단계를 추적하는 간단한 독립 실행 형 클라이언트가 있습니까? 내가 물건을 다르게 계산하는 위치를 파악할 수 있다고 가정하면.