LoginSignup
3
2

More than 5 years have passed since last update.

IoTでOAuth2

Last updated at Posted at 2016-04-10

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に飛んでログインしていれば承認のページに遷移する。

スクリーンショット(2016-04-10 12.47.33).png

DropBoxのMy appsの登録ページのRedirect URIsにhttps://10.0.1.8/oauth2.cgiを追加しておくことも忘れずに。

スクリーンショット(2016-04-10 11.29.30).png

おおよその流れはこんな感じ。

OAuth2.png

後はoauth2.cgiに渡されたURIのcodeを使ってBearer Tokenを拾ってAPIをアクセスする。

app secretは簡単に見えるようなところには置かないようにしなければなりません。

OAuth2の良いところはOAutheではSHA1などのハッシュ処理が必要だったのが無いことがあります。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2