클라이언트 비밀리에 OAuth 2.0

나도 구글 드라이브를 사용할 수 있는 api 를 사용하여 인증을 OAuth2.0. 놀이를하고 그리고 나는 attaboy 몇 가지 질문 우리 섹스한거요.

  1. 클라이언트 app 가 client id 와 암호를 어떻게 내 식별하는 데 사용됩니다. 그러나 그들은 반드시 코딩된 경우 클라이언트 애플리케이션. 그래서 내 앱을 추출하여 소스 코드로부터 모두라뇨 디컴파일 수 있습니다. It 수행 할 수 있는 좋은 앱 치라구요 스크램블된 짓궂군요 나쁜 app # 39 의 클라이언트 id 와 암호를 사용하여, 좋은 app& 않기 때문에 사용자가 화면 표시 할 수 있는 권한을 부여하는 것을 요구하고 있는 가능 약간만이라도 좋은 앱 요청할 경우에도 실제로 나쁜 앱? 그렇다면 어떻게 해야 합니까? 나 진짜 걱정은 안 이?

  2. 우리가 할 수 있는 모바일 앱 (app 웹보기 포함되어 있으며, 우리의 푸십시오 웹보기 필드에 있는 앱을 쉽게 암호를 묻는 권한 때문에 실제로는 browser&quot ";). 그럼, OAuth 의 않을 수 없는 클라이언트 응용 프로그램이 사용자에게 액세스할 수 있는 모바일 애플리케이션 서비스 제공자 가능 크레덴셜

질문에 대한 의견 (4)
해결책

그런데 내가 글을 쓰기 시작한 셀명 데이터베이스에구성원을 질문 나와 너무 많습니다 그래서 여기 내 의견을 말할 수 있는 주제라서요 해답이야

  1. 예) 은 이를 바탕으로 실제 가능성이 있다는 것이 이 및 일부 있었다. 앱 추천 유지할 수 없는 비밀 참여할 수 있는 애플리케이션 (앱) 을 나오겠는가 사양의 분산 어플리케이션을 이 토큰인지 사용할 수 없습니다. 하지만 이제 위해서는 XYZ 单捞磐啊 질문할 수 있을 것이다. 이 경우 해당 서비스를 제대로 사용하지 않는 사양명세 구현 할 때 사용하는 방법 (않을 것 같다) 또는 B 시도하시겠습니까 토큰인지 확보를 위해 일부 난독 어려울 찾거나 server 를 사용하여 프록시입니다.

예를 들어 일부 버그를 페이스북 library for Android 전송되었기 토큰으로 로깅합니다 있었다, 여기에 대한 자세한 것은 어디서 찾을 수 있습니다. http://attack-secure.com/all-your-facebook-access-tokens-are-belong-to-us avamar https://www.youtube.com/watch? v = twyL7Uxe6sk. 모두 사용 될 추가 경계하는 타사 라이브러리 (common sense) 는 실제로 있는 큰 대한 추가 납치 신앙이니라 토큰인지 염려사항 다른 추가 신중한).

  1. 저는 그동안 고함 요점이지 2 에 대한 상당 기간. 심지어 일부 해결 방법을 수행됨 나는 내 애플리케이션을 수정하기 위해 동의 페이지 (예를 들어 확대/축소 및 설계 변경에 맞춰 앱) 의 값을 볼 수 없다고 하지만 웹 사용자 이름과 암호를 사용하여 필드용 인사이드라면 나를 읽는 중. 그러므로 내가 완전히 동의하지 찾아 두 번째 점과 큰 &quot bug"; oauth 의 spec. # 39 점, t, 어플리케이션 doesn& &quot 액세스하십시오 credentials&quot 사용자가 있다. just a dream 의 spec 이 또한 사용자가 보안 및 보기입니다 거짓값 감지에서 의혹을 묻는 사람들은 주로 그 때 난 것 같아요.) 가 자신의 facebook, twitter app, 드롭박스 또는 기타 크레덴셜이. 내가 말하고, 지금 난 의심의 여지가 많은 평범한 사람들이 읽기 OAuth 사양명세 &quot safe&quot. 상식, 일반적으로 사용하지 않는 대신, 그들은 don& # 39 의탁하도록 앱을 사용할 수 없다.
해설 (5)

내가 내 자신을 않았고, 몇 가지 연구를 통해 이 같은 질문을 경식도 같은 질문 1) 은 최근, 내 것이 되지 않도록, 클라이언트 secret&quot 렉시한테서 &quot 결론을 내렸다. 비밀. 이 유형의 클라이언트뿐 기밀을 유지할 수 없는 비밀 클라이언트입니다 호출됨 &quot, 공개 client&quot. oauth2 의 spec. 누군가 가져올 수 있다는 가능성을 막을 내린 후 인증 코드 액세스 토큰, 다음에 의해 있다 "고 덧붙였다.

  1. 사용자 인증 코드를 얻기 위해 필요한 client 에서 직접 아닌 서비스

설사 자신이 있음을 신뢰 하는 서비스 사용자 인증 코드를 보여주는 것만으로 클라이언트상의 서비스에서 클라이언트는 클라이언트 id 와 암호를 클라이언트입니다 가져올 수 없습니다. 대신, 클라이언트 사용자 인증 코드를 직접 가져올 수 있다. (이는 나중에 얘기할 수 있는 URL 로 대개 리디렉션을 내아기마저도.) 따라서 클라이언트상의 악의적인 사용자가 id / 암호를 알 만한 클라이언트입니다 신뢰할 수 있는 것은 아니다. 이 회사는 이를 위해 속임수, 사용자 인증 코드 또는 전달자로써 mediaagent 짐작이지만요. 그냥 client id / 비밀을 알고 있는 것보다 더 많은 노력을 해야 합니다.

  1. Url 은 id/secret 리디렉션하십시오 등록된 클라이언트

악의적인 사용자가 직접 관리할 수 있는 가정하겠습니다 저회가 그녀의 / 그를 &quot, 인증 클라이언트 짐작이지만요.) 를 이 app&quot. 이 서비스에 대한 버튼를 호출이네요 이 서비스를 통해 사용자의 브라우저에 url 을 트리거됩니다 반응이 리디렉션합니다 인증 코드 진행합니다. 인증 코드 보낸 후, 그 클라이언트가 될 수 있어야 사용자의 브라우저에 URL 들을 선수단 리디렉션하십시오 리디렉션할 uirl 수신하십시오 인증 코드. (이 리디렉션할 uirl 수 로컬호스트 너무, 그리고 내가 생각 그것이 "공용" 클라이언트 "받고 있는 대표적인 방법이 인증 코드를.) 이 때문에 url 은 client id / secret service 를 리디렉션하십시오 레지스터링 선수단 악의적인 클라이언트입니다 제어할 수 있는 방법이 없는 것을 있는 인증 코드. 즉, 고객과의 id / 비밀 또다시 걸림돌이 입수합니다 악의적인 클라이언트 사용자 인증 코드.

해설 (2)

두 번째 질문에 대한 답변: 구글 앱 자체 내에 있는 이유는 api 를 통해 보안 인증 / 로그인 잘 수행할 수 없습니다. (같은 웹보기 허용되지 않습니다.) 과 해야 바깥쪽인지가 사용하는 앱 브라우저 보안 강화 원하는거요 기업에서든 아래와 같습니다. https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html

해설 (1)