IoT에서 OAuth2

2640 단어 IoTWebAPIoauth2
Yahoo!BOX의 API가 닫힙니다. 어쩔 수 없이 DropBox 인증 시스템 처리 을 쓰고 있었기 때문에 , 드디어 IoT인 디바이스에 Token 를 건네주는 방법을 시험해 보았다. 보안적인 곳이나 전혀 생각하지 않기 때문에, 이런 일이 가능한 정도의 메모입니다.

물론 FreeBSD가 동작하고 있는 RT3050인 디바이스에 shttpd를 빌드해 둔다. https를하기 위해 libssl도 필요했습니다. ZRouter 에는 profiles/contrib 에 shttpd 1.42 가 들어 있습니다. shttpdmongoose 이라는 프로젝트로 옮겨진 것 같다.
mongoose 쪽은 소스의 다운로드가, com인 사이트에 유도되기 때문에, 프로젝트를 팔아 버려, 상용 라이센스와 GPL인 라이센스가 바뀌어 버렸을지도 모른다.

https 할 수 있는 가벼운 실장을 여러가지 찾아 보았지만, shttpd가 제일 저렴하다. mruby에서도 http 서버의 구현은 있지만 현재 https는 지원되지 않는 것 같습니다.

증명서는 올레올레 증명서를 pem으로 만들고, 비밀 열쇠의 pem로 cat 해 둔다.
$ shttpd -ssl_cert shttpd.pem -ports 80,443s
shttpd 1.42 started on port(s) 80,443s, serving .

shttpd는 google에서 검색해도 거의 정보가 걸리지 않는다. . . ssl의 경우 ports의 번호의 뒤에 s를 붙이는 것을 모르고 조금은 빠졌다.

다음 HTML을 넣어 둡니다.
<HTML>
<BODY>
<A HREF="https://www.dropbox.com/1/oauth2/authorize?client_id=himitu&re
sponse_type=code&redirect_uri=https://10.0.1.8/oauth2.cgi&state=morimori">
DROPBOX OAuth2</A>
</BODY>
</HTML>

이 링크를 두드리면 DropBox에 날아 로그인하고 있으면 승인의 페이지로 천이한다.



DropBox의 My apps 등록 페이지의 Redirect URIs에 https://10.0.1.8/oauth2.cgi를 추가해 두는 것도 잊지 마세요.



대략의 흐름은 이런 느낌.



나중에 oauth2.cgi에 전달 된 URI 코드를 사용하여 Bearer Token을 선택하여 API에 액세스합니다.

app secret는 쉽게 보이는 곳에 두지 않도록 해야 합니다.

OAuth2의 좋은 점은 OAuthe에서는 SHA1 등의 해시 처리가 필요했던 것이 없는 것이 있습니다.

좋은 웹페이지 즐겨찾기