読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Microsoft Authenticator は Apple Watch と組み合わせて使うと非常に捗る件

私自身は Apple Watch を毎日着けているので、ごく当たり前の機能として使ってきたのですが、あまり知られていない気がしたので書いておきます。

結論から先に書いておくと、Microsoft Authenticator は Apple Watch を使うと、1 タップで 2 要素認証の承認が出来るようになってます。Touch ID とかも必要ありません。

Microsoft Authenticator

Microsoft Authenticator

  • Microsoft Corporation
  • 仕事効率化
  • 無料

関係ないですが、このアプリ昔は Azure Authenticator だった気がします。

実際に Outlook.com へのログインで試します。まずはメールアドレスを入れます。

f:id:shiba-yan:20170425012100p:plain

次にパスワードの入力が出来るので、当然ながら正しいパスワードを入れます。

f:id:shiba-yan:20170425012105p:plain

この後に 2 要素認証と認証アプリを有効にしていると、Microsoft Authenticator アプリへ通知が飛んできます。要求 ID として 5 桁のアルファベットが表示されています。

f:id:shiba-yan:20170425012150p:plain

通常なら iPhone や Android から承認を行う必要がありますが、Apple Watch を付けている場合にはロック解除が必要ないので、シームレスに通知から直接承認が行えます。

f:id:shiba-yan:20170425012126p:plain

ちゃんと要求 ID が一致することを確認して、承認をタップすると完了です。手首についているので、キーボードから大きく手を動かすことなく、サクッと対応できます。

これで 2 要素認証を有効にしても手間をかけることなく、セキュアにすることが出来ました。

パスワードレスログインにはまだ非対応

最近のアップデートで Microsoft Authenticator を有効にしている場合、パスワードの代わりに Authenticator を使ってログイン出来るようになったようです。

同じように Apple Watch でも簡単に承認が行えるかと期待しましたが、アプリを起動する必要のある通知しか飛んできませんでした。

f:id:shiba-yan:20170425012737p:plain

時計の方がセキュリティレベルが高いと思うので、2 要素認証の時と同じように 1 タップでログイン出来るようになってもらいたいですね。パスワードを入力する機会が減るので、かなり期待しています。

MNT22J/A ホワイトスポーツバンド Apple Watch Series 2 42mm(ウェアラブル端末)

MNT22J/A ホワイトスポーツバンド Apple Watch Series 2 42mm(ウェアラブル端末)

世間ではいろいろと言われている Apple Watch ですが、個人的にはかなり便利に使えています。

旅行用に Apple Watch 向けモバイルバッテリーを買ってみた

Apple Watch の充電ケーブルは長くて高いので、Lightning にさせる先っぽの電磁誘導部分だけ売ってないかと探したところ、USB 接続ですがバッテリー付きの商品を見つけました。

結構いいお値段がしますが、あの無駄に長くて高いケーブルを持ち歩くことを考えると許せます。

900mAh のバッテリー付きなので、Apple Watch 2 の 42mm モデルなら 3 回近くは充電出来そうです。

Apple Watch 2 になってからは充電しなくても自分の使い方なら 3 日ぐらい持つので、このバッテリーだけ持っておけば 2 週間近く使えるかも知れないですね。

本体に Apple Watch 2 を乗せて、横にあるボタンを押すと充電が始まります。

f:id:shiba-yan:20170424013012j:plain

説明書読んでませんが、ボタンにある LED はバッテリーの残量を表示している気がします。この充電器自体のサイズは思っていたよりは大きいですが、許容範囲内です。そして結構軽いですし。

今回は持ち運びのためにサイズと軽さを重視して選びましたが、最初はこっちと悩みました。

容量が多くてアルミニウムでちょっとカッコよかったし、しかも安いのでかなり惹かれました。

しかし調べてみると結構大きくて、常に持ち運ぶ場合には不向きかなと思ったので、今回は小さい方を選びました。これで旅行にあのケーブルを持ち運ばずに済みそうなので、早速どこかに行ってみたいです。

App Service on Linux を Heroku っぽく使う Runtime Stack を作成してみた

App Service on Linux のカスタム Docker Image を利用していると、やっぱり Heroku のように foreman を使ったプロセス管理が使いたくなってきました。

Heroku では Procfile をルートに用意しておくと、いい感じにランタイムが読み込んで実行してくれます。

2 月に試した時には Ruby on Rails アプリケーションの実行が上手く出来ませんでしたが、最近 Hanselman が動かしていたので試してみます。

Runtime Stack の Dockerfile やスクリプトもいい感じに公開されていたので、参考しながら利用します。

帝国兵殿曰く、Built-in の Runtime Stack に対しては特殊処理が入っているらしいので、独自の Runtime Stack を作る場合には少し手間がかかります。そのままの Dockerfile を使ってビルドしても上手くいきません。

なので多少カスタマイズした Dockerfile を用意しました。基本的な部分は変わりませんが WORKDIR を設定してみたり、ENTRYPOINT を追加してみたりしています。あと foreman のインストールを追加しています。

FROM ruby:2.3.3

COPY startup.sh /bin/

RUN apt-get update -qq \
    && apt-get install -y nodejs --no-install-recommends \
    && chmod 755 /bin/startup.sh

RUN gem uninstall -i /usr/local/lib/ruby/gems/2.3.0 bundler
RUN gem install bundler --version "=1.13.6"

RUN gem install rubygems-bundler
RUN gem regenerate_binstubs
RUN gem install --no-user-install foreman
RUN gem install --no-user-install passenger

WORKDIR /home/site/wwwroot

EXPOSE 3000

ENTRYPOINT ["/bin/startup.sh"]

エントリポイントとして実行するスクリプトは、ほぼ Ruby の Built-in Stack と同じものを用意しました。

最後に Procfile のチェックとポートを指定しての実行を行っています。

#!/bin/bash
cd /home/site/wwwroot

if [ -n "$SECRET_KEY_BASE" ]
  then
    echo 'Secret key base present'
  else
    echo 'Generating a secret key base'
    export SECRET_KEY_BASE=$(ruby -rsecurerandom -e 'puts SecureRandom.hex(64)')
fi

if [ -n "$RAILS_ENV" ]
  then
    echo 'RAILS_ENV set to $RAILS_ENV'
  else
    echo 'RAILS_ENV not set, default to production'
    export RAILS_ENV='production'
fi

echo 'Removing any leftover pids if present'
rm -f tmp/pids/* ;

bundle config --local path "vendor/bundle"
if bundle check --path "vendor/bundle" | grep satisfied
  then
    echo 'dependency check passed'
  else
    echo 'missing dependencies, try redeploying'
    exit -1
fi

echo 'running bundle install --local --deployment'
bundle install --local --deployment

foreman check
foreman start -p 3000

作成した Docker Image は Docker Hub に push した後に、ポータルから設定をしておきます。

f:id:shiba-yan:20170417011740p:plain

最後に作成しておいたテンプレそのままの Rails アプリケーションに対して Procfile を追加します。この辺りは Heroku で使う場合とほぼ変わらない形で問題ないです。

bundle exec を経由して、ポートを指定するのが重要です。

web: bundle exec rails server -p $PORT

Git を使ってデプロイ後、起動には少し時間はかかりますが空の Rails ページが表示されました。

RAILS_ENV が production になっているので、多少味気ない表示ですが動いているので問題ないですね。

f:id:shiba-yan:20170417011651p:plain

最後に Kudu を使って Docker のログを確認してみると、ちゃんと foreman を使ってアプリケーションが起動されていることが確認できます。

web という名前でサーバーが立ち上がっています。

f:id:shiba-yan:20170417013737p:plain

当然ながら web 以外にも常時起動するタイプのアプリケーションを、追加で動かすことも可能です。

App Service on Linux では Docker Swarm が使えないので Supervisord などを使ってきましたが、foreman を使った方が簡単なケースが多そうです。