ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2018年8月27日月曜日

[LINE Login/LIFF]メールアドレス登録無しでLINEログインできるWebアプリを作るには

こんにちは、富士榮です。

LINEログインを使うと、WebサイトへLINE IDを使って簡単にログインすることが出来ます。

また、LINEログインにはオートログインという機能があり、特定の環境においては端末にLINEアプリがインストールされていれば、ブラウザでLINE IDとパスワードを打ち込むことなく、Universal Linkやインテントを使ってLINEアプリへの遷移、自動的にログインをすることが出来ます。

しかし、このオートログイン、少々適用条件が厳しめです。

https://developers.line.me/ja/faq/ より
iOSの場合
LINE 5.2.0以降:LINEのアプリ内ブラウザでLINEログインv2の自動ログインが可能
LINE 7.5.0以降:SafariブラウザでLINEログインv2の自動ログインが可能
LINE 7.12.0以降:LINEログインv2.1の自動ログインが可能

Androidの場合
LINE 6.3.0以降:外部ブラウザででLINEログインv2の自動ログインが可能
LINE 6.4.0以降:LINEのアプリ内ブラウザでLINEログインv2の自動ログインが可能
LINE 7.14.0以降:LINEログインv2.1の自動ログインが可能


こうなってくると、私のようにiOSでChromeを使っている人は結局IDとパスワードの入力から逃れられず、ソーシャルログインのメリットが目減りしてしまいます。
(もちろん、セッションが永続するので2度目以降は大丈夫なんですが)

Safariの場合:LINEアプリが立ち上がり自動ログインされる


Chromeの場合:初回はログイン画面が表示され、2回目以降は確認だけ行われる



結局のところ、外部ブラウザからの遷移を考えるからこうなるので、LINEアプリ内のブラウザでWebアプリを開いてもらえばこのような問題は起きない話しです。ただし、これまではユーザにアプリ内ブラウザの利用を強制する方法がなく、リッチメニュー(トークルームの下に表示できるカスタムメニュー)を個別に作って対応したりしていた訳です。

こういう時に便利なのが、LIFF(LINE Front-end Framework)です。

 LIFF概要
 https://developers.line.me/ja/docs/liff/overview/

仕組み的には、LINEのカスタムURLスキームを使ってLINEアプリ内のブラウザを立ち上げる、という単純な仕組みです。これまではLINEアプリ内でカメラを立ち上げたり、特定のボットのタイムラインを開くことは出来たのですが、アプリ内ブラウザを立ち上げることが出来なかったので、LIFFの登場によりLINEアプリを外部からコントロールする幅が大きく広がった、と言えるでしょう。

 LINEで利用できるURLスキームの一覧
 https://developers.line.me/ja/docs/messaging-api/using-line-url-scheme/


LIFFを立ち上げるには
 line://app/{liff_app_id}
を指定します。

LIFFアプリを作成する際、特定のURLを開くような形でLINEプラットフォームへ登録するため、カスタムURLスキームで外部からLIFFアプリが呼び出されると、LINEアプリ内であらかじめ登録したWebページが開かれる、という仕組みです。

この仕組みを応用すれば、LINEログインをさせたいアプリを開いたときはLIFFを経由して強制的にアプリ内ブラウザを起動する、ということが出来るので、呼び出し元ブラウザを意識することなくオートログインをさせることが出来るようになります。

では、早速やってみましょう。


◆LIFFアプリを登録する


LIFFはボット(Messaging API)の一部の機能として提供されていますので、LIFFを登録するためのエンドポイントへのPOSTを行う際は、Messaging APIのチャネルのアクセストークンを使います。

具体的には、こんな感じのクエリを投げます。
エンドポイントhttps://api.line.me/liff/v1/apps
メソッドPOST
リクエストヘッダauthorizationBearer {Messaging APIのチャネルアクセストークン}
content-typeapplication/json
ボディ{
"view":{
"type":"full",
"url":"起動したいWebアプリのURL(要https)"
}
}


上手くいくと、LIFFアプリIDがボディで返ってきます。
{
 "liffId": "xxxxxx"
}

このボディにセットするURLにLINEログインをさせたいWebアプリのURLを指定すればLINEアプリ内のブラウザでアプリを起動することが出来るので、オートログインができるようになります。


◆LIFF経由でWebアプリを呼び出す


後は呼び出すだけですので、User-Agentを見るなりなんなりしてモバイル系ならカスタムURLスキームで呼び出せば問題ありません。

LIFFアプリを外部ブラウザから呼び出します。


LINEアプリ内でWebアプリが起動され、自動ログオンされます。


ちょっとトリッキーではありますが、現段階で様々な環境のユーザをアプリ内ブラウザへ誘導するにはこの方法しかなさそうなので、覚えておくとよいかと思います。

2016年3月13日日曜日

[Windows 10]Microsoft Passport for Work 2Goが来たか?

こんにちは、富士榮です。

Windows 10のデバイスへのサインイン方法は従来のID/パスワードに加えてPINやWindows Helloの生態認証など大幅に拡張されています。

また、追加でWindows 10 Mobileのスマートフォンを使ったサインイン方法が用意される予定で、ついにベータ版のアプリケーションがストアに登場しました。

が、結論まだまだマイクロソフト社内のテスト用に特化しているようで、まともに動きません。残念。

ということで、概要の紹介と試行錯誤の結果だけ書いておきます。


◆スマートフォンを使ったサインイン

機能の名称は「Microsoft Passport for Work 2Go」になるのかな?という気がしていますが、ようするに、Bluetoothで接続されたスマートフォン上で対象のコンピュータ名をタップすることによってサインインできる、という動きになります。

AndroidとChromebookにおけるSmart Lock for Chromebookと同じですね。
※Smart Lock for Chromebookに関する過去のポストはこちら


◆動作に必要な要件

まだ私の環境では動いていないので動作に必要な要件というのもナンセンスなのですが、色々と資料を見ていると、
・Windows 10 mobile(10.0.14283.1000以降?)のスマートフォン
・スマートフォンにはPhone Sign-inアプリがインストールされていること
・Azure ADに登録されたPC(つまりMicrosoft Passport for Workが動いている環境)
 ※必然的にTH2以降のWindows 10 Pro以上
・スマートフォンとPCがBluetoothでペアリングされていること
が条件になってきそうです。

◆現状の動き

とりあえず、どんな動きになるのか確認してみます。

<PC>
先の条件を満たしたPCにAzure ADのアカウントでサインインすると、サインイン画面にスマートフォンでサインインというメニューが出てきます。

これをクリックするとこんな画面が出てきます。


<スマートフォン>
本来はここでスマートフォン側のアプリ(Phone Sign-in)でコンピュータ名を選んでログインするんでしょうが、現状はアプリケーションにアカウントを追加するところでエラーが出て、うまく動きません。

とりあえずできているところまで紹介します。
①ストアからPhone Sign-inをインストールする
 現状ストアアプリで検索しても出てこないので以下のリンクから直接ストアへ移動してダウンロード・インストールを行います。
 https://www.microsoft.com/en-us/store/apps/phone-sign-in-beta/9nblggh5lb73

 ここで問題となるのが、最新のWindows 10 mobileのビルドが要求されてしまうところです。手元にあったWindows 10 mobileは10.0.10586.164だったのですが、このビルドではインストールできませんでした。


仕方がないので、Fast Ringより10.0.14283.1000へあげてみます。ちなみに現状このビルドへあげられるのはかなり限定されたデバイスだけみたいです。(手元のLumia 430はNG、Lumia 950はOKでした)


ビルドを上げた後、再度ストアへアクセスすると今度はちゃんとインストールできました。


②アプリにアカウントを登録する
どうやらサインインに使うアカウントをアプリにも登録しておくようです。
断定できないのは、ここでエラーが発生して先に進めていないからです。。。



まずは、スマートフォン自体にサインインしているアカウント(Azure ADアカウントでサインインしています)が表示されるので、選択してみます。

選択して先に進むと、エラーがでてしまいます。


こうなるとにっちもさっちもいきません。
アプリを再起動してもこの状態のままで何もできなくなります。
仕方がないので、アプリを削除して再インストールします。

今度は別のアカウント(スマートフォンへログインしているユーザではないAzure ADユーザ)を追加してみます。
すると、別のエラーが出ます。

Azure ADにセットされているReply URLがCloud eXperience Hostと同じくAAD Broker Pluginとなっており、Azure ADテナントに登録されているアプリケーションのReply URLと異なっているようです。このあたりからまだまだインターナル用なのかな?という推測をしています。おそらくインターナルテスト用のAzure ADにはこの仕組みに対応したアプリケーションが登録されていて、うまく動くんだと思います。



とりあえず今後の更新に期待ですね。
アプリの解説ページにも今後はマイクロソフトアカウントでも使えるような拡張なども予定されているようですし。





2015年8月31日月曜日

[顔認証]ChromebookでWindows Helloっぽくログインする

こんにちは、富士榮です。

Windows 10の新機能であるWindows Helloでは顔や指紋などの生体情報を使ってOSへログインすることが出来ます。

 関連ポスト)
  [Windows10]ついにWindows Helloで顔認証!
  http://idmlab.eidentity.jp/2015/07/windows10windowshello.html


一方で他のOS/デバイスではどうなのかと言いますと、iOSにおけるTouchIDのあるAppleや、SAMSUNGやdocomoがFIDO Allianceに参加しているAndroidなどもメーカ実装として生体認証に対応してきています。

こうなってくると気になるのがGoolgeの出しているChromebookです。
(気になるのはごく一部の人だとは思いますが)

と、いうことで確認してみます。


◆準備
今回は以下の2つの機能を使ってChromebookへのログイン/ロック解除時の顔認証を目指します。
1.Smart Lock for Chromebook
2.Smart Lock for Androidの顔認識機能


1.Smart Lock for Chromebook
まずはChromebook側のSmart Lockです。
ChromebookにはSmart Lock for ChromebookというAndroidを使ったログイン/ロック解除機能が存在します。

 Android スマートフォンで Chromebook のロックを解除する
 https://support.google.com/chromebook/answer/6070209?hl=ja

簡単に言うとあらかじめBluetoothでペアリングされた、Smart Lockに対応した端末(Android 5.0以降)がChromebookの近く(Bluetoothの有効範囲)にあるとパスワード入力をスキップして端末へのログインやロック解除を行うことが出来る、という機能です。

この機能を使うには、BluetoothをONにした状態で、Chromebookの設定からSmart Lockの設定を行います。


設定時、同じくBluetoothをONにしたSmart Lock対応のAndroid端末が近くにあると、自動的にデバイスを検出します。




2.Smart Lock for Androidの顔認識機能
次にAndroid端末側です。

こちらも端末の設定のセキュリティ項目からSmart Lockの設定を行います。


今回は顔認証を行うので、「認識済みの顔」を選択し顔を登録します。




◆テストする
ここまでで、Chromebook⇒Android端末⇒顔という信頼関係が構築されました。

早速Chromebookを起動、もしくはロックします。
Android端末側のロックを解除していない状態だと、以下のようなメッセージが表示され、ロック解除を促されます。



Android端末側を起動すると、ロック画面の一番下に顔マークが表示され、信頼済みの顔を探します。



正常に顔を認識すると顔マークがロック解除マークに代わり、画面をスワイプするとパスワードを入れなくても端末ロックを解除できます。




Android端末のロックを解除すると連動してChromebookのロックも解除され、Chromebookのロック画面がロック解除状態になり、写真をクリックすれば同じくパスワードを入れなくても端末ロックを解除できます。




Windows 10のWindows Helloと異なり、PC(+カメラ)単体での顔認証とは行きませんが、Android端末側のロック解除方法によって認証のバリエーションが変えられるので、利用者の状況に合わせた柔軟かつ安全な運用を行うことができると思います。
※そのような意味で、生体認証付きの多要素認証ログインという方が的確なのかもしれません。