2009-04-07 3 views
9

Java에서 작은 프로그램 (트위터 클라이언트)을 작성 중이며 Mac OS X을 대상으로합니다. 기능의 일부로 Twitter 사용자 이름/암호. 자연스러운 장소는 맥 키 체인이지만, 어떤 방식 으로든 액세스 할 수는 없습니다.Java를 사용하여 Mac에 사용자 이름/비밀번호 저장

Java에서 Mac 키 체인에 액세스 할 수있는 방법이 없거나 사용자 이름/암호를 저장할 위치를 권장하지 않습니다.

답변

14

OS X backed by the keychainKeyStore의 구현이 있다는 점에서 Java 키 체인 API가 있습니다.

키 체인이 암호를 저장하는 가장 좋은 장소라고 생각하면 () 암호를 저장하십시오. 그것은 좋은 알고리즘으로 암호화되어 있으며, 사용자는 허용되는 키 체인의 사용 가능성에 대해 관대하거나 편집증처럼 자유롭게 할 수 있습니다. 그러면 암호는 사용자가 저장하는 다른 모든 암호와 함께 저장되고 구성됩니다.

+0

가끔은 당신이 지저귐 클라이언트를 쓰지 않을 것이고 당신은 편집증 사과 암호 경고를 원하기 때문에 나는 Kevin의 대답보다 이것을 좋아합니다. 취소 또는 허용. 취소 또는 허용. (비스타가 거의 맞았다.) – shemnon

+0

나는 같은 이유로 너무 좋아. –

+1

누구든지 이것을 시도 했습니까? 나는 그렇게했고 당신은 apple.security.KeychainStore로 SecretKey를 저장할 수 없다고 생각한다. - 소스 코드를 보라. –

4

저는 이것을 시도하지는 않았지만 KeychainStore 유형의 KeyStore을 생성하는 Apple 암호화 공급자 (com.apple.crypto.provider.Apple)로 키 체인에 액세스 할 수있는 것 같습니다.


좋아, 일부 실험 후, 나는 KeychainStore에서 개인 키 – 인증서 항목에 액세스 할 수 있었다. 그러나 내 키 체인의 암호가 표시되지 않았으며 (별칭이 나열되지 않았습니다.) KeyStore.SecretKeyEntry (암호를 저장해야하는 항목)을 추가하려고 시도했을 때 "Key is not a PrivateKey ". 분명히 애플은 SecretKeyEntry을 지원하지 않았다.

키 체인을 통해 트위터 암호를 보호하려는 경우 RSA 키 쌍을 생성하고 인증서에 자체 서명 한 다음 키 체인에 PrivateKeyEntry을 추가하면됩니다. 그런 다음 키 쌍을 사용하여 트위터 암호를 보호 할 수 있습니다.

인증서에 직접 서명하는 것은 그리 어렵지 않지만 그 경로를 찾으면 BouncyCastle 라이브러리에서 도움을받을 수 있습니다.

+0

사실, 작동하지 않습니다. 그러나 JCEKS는 KeyStore로 작동합니다. 예를 들어, http://kingsfleet.blogspot.de/2008/12/storing-password-somewhere-safe.html – hendrik

+0

@hendrik 예. JCEKS는 항상 SecretKeyEntry를 지원했지만이 질문은 특히 Mac OS의 "키 체인"기능. – erickson

+0

땀을 흘리지 않고, 몇 가지 추가 정보를 추가하고 동시에 Java OSX 포트 목록에 문제를 제기하고 싶었습니다. 누가 알겠습니까? 아마도 어느 시점에서 구현 될 것입니다. – hendrik

3

OAuth 지원에 대한 twitters API 페이지를 살펴 봐야합니다. OAuth를 사용하면 사용자의 트위터 비밀번호를 알 필요가 없습니다.

http://apiwiki.twitter.com/OAuth-FAQ

+0

그것은 훌륭합니다! 좀 더 살펴봐야 할 것이지만 비밀번호 저장보다 훨씬 좋은 해결책이라고 생각됩니다. – Zarkonnen

+0

도와 드리겠습니다. 나는 그것이 당신을 위해 일하기를 바랍니다. –

+0

만약 그렇다면 최상의 답변 틱을 얻을 수 있습니다. – Zarkonnen