Quantcast
Channel: IdM実験室
Viewing all 769 articles
Browse latest View live

OpenID ConnectとSCIMのエンタープライズ利用ガイドライン、(同)実装ガイドライン

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

2013年末に第1版が出てから2年3か月を経て、改訂版の「OpenID Connectのエンタープライズ利用ガイドライン」および「(同)実装ガイドライン」が公開されました。

実装ガイドライン

利用ガイドライン


初版では利用ガイドラインと実装ガイドラインが分離されておらず、若干プロトコル寄りに偏った内容でしたが、今回はエンタープライズにおけるID運用の特徴を踏まえたフェデレーションやプロビジョニングに関する考え方をまとめた「利用ガイドライン」と、OpenID Provierや対応するアプリケーション、SCIMを使ったプロビジョニング・サービスの実装に特化した「実装ガイドライン」を別冊とすることにより、より読み手を意識した構成となっています。

各ガイドラインはOpenID Foundation Japanのホームページからダウンロードできますので、ぜひダウンロードして目を通してください。
 https://www.openid.or.jp/news/2016/03/eiwg-guideline.html

私がエクスジェン・ネットワークスの江川さん、セコムの島岡さんと3名で改訂を担当させていただきました利用ガイドラインの中身を簡単に紹介させていただきますと、

  • なぜフェデレーションが必要なのか?
  • エンタープライズとコンシューマのフェデレーションに関する考え方の違いとプロビジョニングの必要性
  • 標準化されたプロビジョニングAPIの重要性
  • アイデンティティとトラスト、身元保証
  • 権限委譲と代理アクセス、トレンドとしてのUMAの紹介

といったキーワードでまとめています。

また、オージス総研の八幡さん、OpenID Foundation Japanのnov氏らでまとめた実装ガイドラインではOpenID ConnectおよびSCIMのプロトコルの解説からユースケースへの適用、実際のサンプル実装例が解説されており、かなりのボリュームになっています。

ID管理・ID連携の企画~検討を行うIT企画の方にも、サービス実装を行う開発者の方にも役立つ内容となっていると思いますので、是非ダウンロードしてご覧ください。

[Azure AD] Azure AD Basicがオンラインで購入可能に

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

これまでEA(Enterprise Agreement)やCSP(Cloud Solution Provider)でしか入手できず価格も公表されていなかったAzure Active Directory Basicですが、先週よりオンラインで購入できるようになっています。

月額109円(税別)です!

このことにより、個人で検証を行うのに無料版では機能面で物足りないんだけど毎月650円払ってPremiumを買うのは機能面でもコスト面でもオーバースペック、という方に道が開けました。

 Azure ADのエディションによる機能の比較はこちら。
 https://azure.microsoft.com/ja-jp/pricing/details/active-directory/

 ※グループベースでのプロビジョニングやセルフサービスパスワードリセット、アプリケーションプロキシなど、Basicでもやれることの幅はぐっと広がります。


と、いうことで早速買ってみました。


まずは、管理ポータルからディレクトリを開いてライセンスメニューを開き、[購入]をクリックします。



すると、まるでAzure AD Premiumを購入させられるような気になる画面が出てきますが、無視して直接購入へ進みます。


ここで、ディレクトリ内の管理者ユーザでログインしていない場合はOffice365のログイン画面でログインし直しを要求されます。

ログインが完了すると、ライセンス購入画面に遷移するので、Azure AD Basicを探します。

・・・
・・・
・・・
ありました!下の方に。


ということで、[今すぐ購入]します。

支払方法と数量を選択し、[今すぐ支払う]でチェックアウトします。

購入内容を確認します。


支払方法を選択します。



これですべて完了です。
後はユーザへ購入したライセンスを割り当てます。


管理ポータルに戻るとライセンスが追加されています。

ライセンスを開いてユーザの割り当てを行います。
ユーザ一覧から割り当てたいユーザを選択して[割り当て]を行います。


これでおしまいです。

割り当てたユーザを管理者にして管理ポータルにログインしなおしてみます。

すると、Basicの機能が使えるようになっています。

・カスタムブランディング

・アプリケーション・プロキシ

・グループベースのプロビジョニング





月々このくらいの金額で飛躍的に管理性が向上しますね。
また、いつでもやめられるのもクラウドの利点なのでぜひ一度試してみてください。


[MIM]Microsoft Identity Manager April 2016 Previewが公開

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

先月に引き続き、Microsoft Identity Manager 2016の2016年4月版のCTPが公開されています。

※先月はこちら。
 [MIM]Microsoft Identity Manager April 2016 Previewが公開
 http://idmlab.eidentity.jp/2016/03/mimmicrosoft-identity-manager-march.html

先月は、環境面では、IE以外のブラウザのサポート、機能面では特権ID管理フォレストの既存のユーザ、グループをPAMロールへ追加することが出来る、という拡張でしたが、今月は新しいプラットフォームへの対応です。


  • MIM Sync/MIM ServiceデータベースとしてWindows Server 2012 R2上のSQL Server 2016 RC2をサポート
  • MIM Sync/MIM Serviceが使うメールサーバとしてWindows Server 2012 R2上のExchange Server 2016をサポート
  • MIM Portalのインストール先としてWindows Server 2012 R2上のSharePoint Server 2016をサポート
  • MIM Add-inのインストール先として、Windows 10上のOutlook 2016をサポート

まぁ、SharePoint Server 2016をサポート、と言っても互換レベルは15なので、2013相当のWebサイトを作るだけなんですけどね。

いずれにしても、製品が定期的に更新されていることが見えるのは使う側からすると安心ですね。投資が継続していることが見えるので。

[Azure AD]サードパーティのOATH対応トークンで多要素認証

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

これまでAzure Active Directory(Azure AD)の多要素認証機能(MFA)には、
・Azure Authenticatorアプリによる通知もしくはOTP(ワンタイムパスワード)
・SMSによるテキストメッセージ通知
・音声による通知
の3つの手段しか2要素目として使用することが出来ず、他の要素を使いたい場合はオンプレミスのMFA Serverを構築してAD FSと連携させるしか方法がありませんでした。

要望としてはかなり前からフィードバックが上がっており、OATH対応するよ!という話はチラチラと聞こえていたんですが、ようやくオフィシャルに出てきました。

 Active Directory Team Blogのエントリ
  More #AzureAD MFA Coolness ? selectable verification methods and more OATH!
  https://blogs.technet.microsoft.com/ad/2016/04/20/more-azuread-mfa-coolness-selectable-verification-methods-and-more-oath/


内容はというと、OATH(Initiative for Open AuTHentication)に対応しました!ということです。OATHと言えば、Google Authenticatorをはじめメジャーどころが対応している事実上の標準なので、一気に選択肢が増えたということが出来ます。

と、いうことで今回はGoogle Authenticatorを使ってみます。

◆まずはセットアップ

MFAを有効にしたユーザでAzure ADでログオンするアプリ(例えば、https://myapps.microsoft.comなど)へアクセスし、Azure ADで認証をします。
初回なので、多要素認証の設定が求められるので、迷わずアプリケーション/承認コードを選択し、セットアップを行います。

セットアップをクリックすると、アプリケーションの構成画面が出るので、「そのままバーコードを読み込ませずに」、通知せずにセットアップをクリックします。


すると、バーコードとアカウント名およびシークレットが表示されます。


ここで、Google Authenticatorを起動し、QRコードを読み込ませます。
もちろん認証器によっては直接アカウント名とシークレットを入力しても大丈夫です。


正常に読み込みができると、Google Authenticator上にOTPが表示されます。


OTPが表示されたら設定は終わりなので、ブラウザ側でも完了(Done)をクリックし、アクティベーション状況を確認します。問題なければテスト通知が行います。

OTPを入力する画面が表示されるので、Google Authenticator上のOTPを入力します。



これで、完了です。


◆実際の多要素認証でログイン

ここまで行けば設定は終わっているので、多要素認証を要求するアプリケーションへのログインを行うと、パスワードに加えてOTPが要求されますので、Google Authenticator上に表示されるOTPを入力してログインします。



設定が問題なく完了していれば、これでログインできるはずです。




今回はGoogle Authenticatorを利用しましたが、OATHのTOTP(Time-based One Time Password)に対応したOTP生成器であれば基本的に使えるはずなので、ハードウェアトークンやスマホ以外の認証器でもAzure ADの多要素認証が実現できるようになるはずです。

特にハードウェアトークンの利用のニーズは健在なので、実案件への適応範囲は拡大していくと思われます。

[Azure AD]Yubikeyを使って多要素認証ログインする

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

前回のポストではAzure ADの多要素認証がOATHに対応したこと、Google Authenticatorでのログインを試しましたが、よく考えたらYubikeyのDesktopクライアントがOATHに対応していたので、Yubikeyを使ってもログインできることに気が付きました。

ここからクライアントのダウンロードができるので、ダウンロードしてインストールします。

https://developers.yubico.com/yubioath-desktop/


インストール後、起動するとYubikeyを指すように言われるので、YubikeyをUSBスロットに挿入します。


メニューからAddを選択するとQRコードを読み込む画面が出るので、前回の手順に従いAzure ADのQRコードを画面上に表示し、Yubikeyの挿入されたUSBスロットを選択した上でスキャンします。


うまくいくと、前回のGoogle Authenticatorと同様にOTPが表示されるので、設定を完了します。


これで設定完了です。

アプリケーションへのログインも問題なくYubikeyでできるようになりました。
ちなみに、Yubikeyは刺さっていればよいので、端子部分をタッチする必要はありません。




しかし、この方法の最大の欠点は「Yubikeyを指したPC自身が認証器になるので、PCとYubikeyをセットで持ち運ばないと使えない」ことですね。。。

[Azure AD]ユーザの多要素認証設定を管理者により行う

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

Azure Active Directory(Azure AD)の多要素認証(MFA)のセットアップは基本的にユーザ自身で通知手段や通知先の設定を行う必要があります。

今回は、この設定を管理者からやってしまいたいと思います。
尚、当然ですが、Azure Authenticatorなどペアリングを行う必要があるアプリケーションを通知先として管理者側で設定して利用できる状態にしてあげることはできません。
可能なのは、
・携帯電話へのボイス通知
・携帯電話へのテキスト通知
・オフィス電話へのボイス通知
の3種類だけです。
※通知手段としてアプリを強制することはできますが、ペアリングされていない状態なので、認証時にエラーが出ます。


◆従来の多要素認証設定(ユーザ自身による設定)

多要素認証が必要な場面になるとログイン時に多要素認証が要求されます。この際、事前にユーザが通知手段の設定を行っていないと、セットアップを促されます。

ユーザは自身で通知手段と通知先を設定する必要があります。



これらを管理者から事前にセットアップしておくには、
・通知手段
・通知先
の両方を管理者から設定できる必要があります。

順に見ていきましょう。

◆通知手段を設定する

おさらいですが、Azure ADの多要素認証には、
・携帯電話へのボイス通知
・携帯電話へのテキスト通知
・オフィス電話へのボイス通知
・モバイルアプリへのPush通知
・モバイルアプリのOTP(One Time Password)の利用
の5種類の通知手段が用意されています。

この設定はユーザのStrongAuthenticationMethodsという属性に配列として定義されています。
MFAを有効にしたユーザの属性をGet-MsolUserで見ると以下のように設定が入っています。


このMethodTypeが通知の方法でIsDefaultがその名の通り、既定で使われるかどうかを示しています。

尚、このMethodType、つまり通知手段は先の5つの方法それぞれに対応して以下の通りの文字列となっています。

通知手段MethodTypeの値
携帯電話へのボイス通知TwoWayVoiceMobile
携帯電話へのテキスト通知OneWaySMS
オフィス電話へのボイス通知TwoWayVoiceOffice
モバイルアプリへのPush通知PhoneAppNotification
モバイルアプリのOTP(One Time Password)の利用PhoneAppOTP


ということで、このStrongAuthenticationMethodsをSet-MsolUserで設定してあげれば、通知手段を強制的に設定することが出来ます。
ただ、先にも書いた通り、この属性は配列となっているので、Microsoft.Online.Administration.StrongAuthenticationMethod型のオブジェクトを作成し、プロパティを設定した上で配列化してから、実際のユーザ属性へセットする必要があります。

この辺りは以下のコードの最後の$mfおよび$mfa変数への値のセットの仕方を参考にしてください。


では、この方法でユーザに通知手段を設定したユーザでログインを試みてみます。


先ほどとは異なり、通知が行われます。
(携帯電話へのテキスト通知を設定しました)

しかし、通知先の設定をしていないため、当然ながらエラーが発生します。

ということで、次は通知先の設定を行います。

◆通知先を設定する

こちらは非常に簡単です。ユーザの属性に携帯電話の番号や会社の電話の番号を設定すればよいだけです。

クラウドユーザならSet-MsolUserコマンドレットもしくはAzure ADの管理ポータルでユーザの属性を設定します。
Set-MsolUserコマンドレットの場合:
 会社の電話 : PhoneNumber
 携帯電話 : MobilePhone
Azure AD管理ポータルの場合:
 会社の電話 : 勤務先タブの中の会社電話
 携帯電話 : 携帯電話

尚、PowerShellから設定する際、国コードおよび電話番号が必要ですが、国コードと国内番号の間は半角スペース、国内番号の最初の0はつけたままにしておく必要があります。
(また、内線番号を使っている場合は国内番号と内線番号の間に"x"を入れておくとデリミタとなります)

こんな感じです。


尚、ローカルActive Directoryから同期しているユーザの場合、管理ポータル等で電話番号が変更できないので、ローカルActive Directory側で属性を設定してあげる必要があります。

会社電話はここです。

携帯電話場はここです。



これで同期を行うと、Azure AD管理ポータル上に値が入ります。



さて、ここまで設定したらログインを試行し通知が正しく行われるはずです。

実際にログインすると、、、、
正しく通知されました。



また、この後、ユーザ自身で通知手段を変更することもできるのですが、その際の通知先として先に設定した属性が正しく認識されます。






なかなかユーザ自身での多要素認証設定を徹底するのはリテラシー的にも厳しい場合もあると思うので、管理者側で一気に設定を行うことも検討しても良いかも知れませんね。

[AD FS/Windows Server 2016]Microsoft Passportがやってきた

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

昨日よりWindows Server 2016の新しいプレビュー版のTechnical Preview 5が公開されていますので、早速AD FS周りを見てみました。
(今回は触りだけです)

一番の変更点は「認証方法にMicrosoft Passportが選択できるようになっている!!」ことです。

これで、ようやくハイブリッド構成においてもMicrosoft Passportを使ったデバイス・ブラウザ間のシングルサインオンが実現できるようになります。

このイメージ+Federation構成ですね。(MVP Comcampで使った資料より)
http://www.slideshare.net/naohiro.fujie/azure-adwindows-10



取り敢えず今回は画面だけ紹介です。

認証方法の設定です。
初期状態でIntranetもExtranetもMicrosoft Passportが選択されています。

Editをクリックして詳細を見てみます。


これを使えば、これまでの社内からは統合Windows認証によるデバイス・ブラウザ間のSSO、社外からはフォーム認証(SSOなし)という使い分けではなく、社内・社外に問わないユーザ・エクスペリエンスが提供できるようになるので、非常に便利ですね。

[Azure AD]トラブルシューティングに見るAzure AD参加の裏側

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

ゴールデンウィークも終わりですね。

と、いうことで今回は今年の私のゴールデンウィークの7割を奪ったAzure Active Directory(Azure AD)へのデバイス登録時のトラブルと、トラブルシューティングの中で見えてきたAzure AD DRS(Device Registration Service)の裏側の仕組みの話です。


◆何が起きていたのか?

4月の終わりから5月の頭にかけてAzure AD DRSの一部機能で障害が発生しており、
Windows 10デバイスをAzure ADへ参加させた後のサインイン時のPIN作成でエラー 0x801c03ed が出る
という状況になっていました。

こんなエラーが出ます。


どうやらみなさん困っていたようで、各所に情報が出始めていました。

 (未解決) PIN setup on Azure AD joined machine fails.が、現在も発生
 Error 0x801c03ed during PIN create/change


エラーコードだけを見ているとデバイス参加時に多要素認証が必要な設定になっているにも関わらず、多要素認証を実施しなかった等が原因で対策としては一旦Azure ADから切り離して再参加する、と書いてあるのですが、多要素認証を要求する設定をしていないにもかかわらずこのエラーがでたり、多要素認証を実施してもエラーがでたり、そもそも再参加しても状況が改善しない、という状態でした。

 エラー時のリファレンス
 Microsoft Passport errors during PIN creation


◆トラブルシューティングとして何をする/したのか

先に書いたように今回はトラブルシューティングをしても一向に解決しなかったので、中の人に泣きついた結果障害が発覚して収束したんですが、トラブルシューティングの過程を残しておくことも今後の役に立つと思ったので少し残しておきます。

1.イベントログを確認する

 ユーザがデバイスを登録する際、クライアント側のイベントログに様々な情報が記録されます。関連するのは、主にUser Device Registrationで、必要に応じてAADについても見ることになります。(両方とも、アプリケーションとサービスログ->Microsoft->Windowsの配下にあります)

 エラーが発生しているときは、User Device RegistrationのAdminログにID:301のエラーが発生していました。

 NGC KeyをAzure DRSへ登録する際にInsufficient privilegesが出ていますので、先の多要素認証が正常に実行されていない時と同じエラーだと判断されたようです。

 この前後のログを見ると、Azure DRSへNGCを登録する際の動きを推測することが出来ます。

 流れは、
 1.Azure DRSのエンドポイントを検出する
 2.対象ユーザが関連付けされているデバイスをAzure ADディレクトリから探し出す
 3.クライアントで生成した鍵ペアより公開鍵を登録する
 となっています。
 (細かくは省きますが、OOBEでのセットアップ時(WinPE)かどうか判別したり、レジストリからNGC関連の情報を読み取ろうとしたり、と前処理では他にも色々とやっています)

 順番に見ていきます。

 1のAzure DRSのエンドポイントの検出です。ここは障害が発生している間もうまく動いていました。検出は以下の2つのXMLドキュメントを使ってクライアント・コンフィグレーションをAzureから取得するところからスタートします。
  https://clientconfig.microsoftonline-p.net/FPURL.xml
  https://clientconfig.microsoftonline-p.net/fplist.xml
ここで主にやっているのは、通常のテナント(MicrosoftOnline.com)なのか、中国用テナント(partnet.microsoftonline.com)なのかの判別をして、必要なIdPのURLを取得するところです。

 この後、ユーザのドメイン名からDRSや関連するエンドポイントを検出し、その結果がイベントログに記録されます。
 DRSのエンドポイントと、Azure AD上でのリソースURI、OAuth関連のエンドポイントが検出されています。



 2のAzure ADに登録されたデバイスとの関連付けについてはイベントログには現れませんが、前段でAzure ADへの参加をした時にAzure AD上に登録されたデバイスからのNGC登録要求でないとAzure DRSは受付けません。デバイスの登録状態はAzure ADのPowerShellコマンドレッド(新しい奴)もしくはGraph APIで状態の確認ができます。

 Get-MsolDevice -Allで一覧を取得した結果はこんな感じです。このDeviceTrustTypeに「Azure AD Joined」とあるのがAzure AD参加したデバイスです。※ちなみにオンプレADに参加したデバイスをAzure ADへ同期すると「Domain Joined」となります。また、Intuneで管理されている状態だとDeviceTrustLevelがCompliantに、単純にデバイスが登録されただけの状態だとAuthenticatedになります。


 最後にクライアント側で生成した鍵をAzure ADへ登録するところで先ほどは「Insufficient privilege」と言われてエラーになっていましたが、正常に登録できると「Microsoft Passport key was successfully registered」というメッセージが出ます。


 なお、今回トラブルシューティングをする上では、さらに細かい情報を取得する必要があったため、User Device Registrationのデバッグログを有効にしました。
 有効にするには、イベントログのデバッグおよびトレースを有効化した上で、User Device RegistrationのDebugログを有効にします。


 デバッグログを有効化することで膨大なログ(PIN登録部分だけで1000件近く)が出ますが、より細かい状態を把握できます。
 今回のケースだとID:502で以下の3つのエラーが記録されていました。
・XMLのパースエラー(エンドポイントのディスカバリ時のエラー)
・NGCコンテナの作成エラー
・NGC登録時にサーバーエラー(400)
 後半2つは最初のエラーに起因するものだと思われるので、一番の原因はディスカバリだった、ということですね。ちなみに事象が解消した現在でもfplist.xmlにDRS要素はないので、fplist.xmlのパース処理自体に問題があった、ということだと思います。

 イベントログはこんな感じです。


2.Azure ADへのクライアント登録の状態からWindows 10とAzure ADの関連を知る

 これは今回のトラブル解消には全く関係ありませんでしたが、イベントログを見て行く過程でAADのイベントログにこんな情報が出ていました。(User Device Registrationではなく、AAD側のログ)

 この辺りを見ると、Azure ADの共通テナント(https://login.microsoftonline.com/common)上にAAD.BrokerPlugin用のクライアントがマルチテナント構成で登録されていることがわかります。
※この画面では、クライアントID「dd762716-544d-4aeb-a526-687b73838a22」が見えますが、他にも「a40d7d7d-59aa-447e-a655-679a4107e548」などが登録されています。

 仕組みとしては、Windows 10のネイティブアプリケーションであるMicrosoft.AAD.BrokerPluginがAzure ADの情報にアクセスするために、共通のクライアントがAzure AD上に登録されており、そのクライアントを使ってAzure ADとやり取りをしているようです。Edgeを使ったデバイス->ブラウザのシングルサインオンにおけるPRT(Primary Refresh Token)からアクセストークンの取得でも活用されているので、知っておいて損はありません。
 実際の動きはFiddlerでも見ることが出来ますが、無理やりブラウザを使ってリクエストを投げてみるとクライアントがどのような名前で登録されているか、くらいはわかります。

 例えば、DRSへのアクセストークンを取得したい場合は、
 https://login.microsoftonline.com/common/oauth2/authorize?
  response_type=code%20token&
  client_id=dd762716-544d-4aeb-a526-687b73838a22&
  redirect_uri=ms-appx-web%3A%2F%2FMicrosoft.AAD.BrokerPlugin%2Fdd762716-544d-4aeb-a526-687b73838a22&
  resource=urn:ms-drs:enterpriseregistration.windows.net
 を投げるとクライアントのDisplayNameは空白で、多要素認証を要求していることがわかります。
 (実際は多要素認証に回答してもそのまま固まりますが)

 同様にアカウント設定画面での操作は、
 https://login.microsoftonline.com/common/oauth2/authorize?
  response_type=code%20token&
  client_id=a40d7d7d-59aa-447e-a655-679a4107e548&
  redirect_uri=ms-appx-web%3A%2F%2FMicrosoft.AAD.BrokerPlugin%2Fa40d7d7d-59aa-447e-a655-679a4107e548&
  resource=https%3A%2F%2F<ドメイン名>
 を投げるとクライアントが「Accounts Control UI」という名前で登録されていることがわかります。
 (こちらはBad Requestになります)

 このあたりはトラブルシューティングにはあんまり役に立ちませんが、内部の動きを知っておくのは良いことだと思います。


3.PIN生成時の通信をFilddlerでキャプチャする

 この辺りも基本的なところなので、押さえておきたいところです。
 Jairoのblog(翻訳版はこちら)を見ると、PIN登録時に「https://account.live.com/aadngc」へアクセスする、とありますが実際の動きはどうなっているのかを確認してみましょう。
 
 Fiddlerのセットアップや基本的な操作方法については割愛しますが、ポイントは以下の2点です。
 ・ブラウザ以外のセッションもキャプチャする
 ・HTTPSの復号を有効にする

 特にポイントになるのは、Windowsアプリケーションからの通信をキャプチャするという部分で、具体的にはFiddlerの左上のWinConfigをクリックして必要なアプリケーションを選択して保存を行います。

 画面の中にアカウントや職場または学校アカウントなどが関連するのでチェックが入っているか確認しておきましょう。


 この状態でPINのセットアップを行うと、以下のようなキャプチャが取得できます。

<リクエスト>
GET https://account.live.com/aadngc?uiflavor=win10&mkt=ja-JP&hasngc=0&platform=Windows10&scid=4&ctc=0&uiflavor=Win10 HTTP/1.1
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Language: ja
cxh-osVersionInfo: {"platformId":0,"majorVersion":10,"minorVersion":0,"buildNumber":14332}
hostApp: CloudExperienceHost
client-request-id: 872a9ff6-a81d-0000-0cad-2d871da8d101
cxh-protocol: ms-cxh
cxh-cxid: NGC
cxh-preferredLanguage: ja
cxh-correlationId: 872a9ff6-a81d-0000-0cad-2d871da8d101
cxh-source: ms-cxh://NTHAADNGCONLY/
cxh-osPlatform: CloudExperienceHost.Platform.DESKTOP
cxh-platform: CloudExperienceHost.Platform.DESKTOP
cxh-isRTL: false
cxh-colors: themeAccent=#0078d7;themeAccentLight1=#429ce3;themeAccentLight2=#76b9ed;themeAccentLight3=#a6d8ff;themeAccentDark1=#005a9e;themeAccentDark2=#004275;themeAccentDark3=#002642;themeTextApplication=#000000;themeTextSystem=#ffffff;
cxh-host: NTHAADNGCONLY
cxh-hostAppVersion: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; MSAppHost/3.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 Edge/14.14332
Accept-Encoding: gzip, deflate
Host: account.live.com
Connection: Keep-Alive
Cookie: mkt=ja-JP; DID=5737

 こうやって見ると、CXH(Cloud eXperience Host)が内部的には健在なことがわかりますね。レスポンスはHTMLが返ってきているので、CXH内での画面表示はHTMLであることがわかります。

 その後、https://auth.gfx.msへのアクセスが続いた後、最終的にhttps://account.live.com/API/ReportClientEventへ以下のJSONがPOSTされます。
 {
  "pageApiId":"Account_AAD_NGC_Provisioning",
  "clientDetails":[],
  "userAction":"",
  "source":"PageView",
  "clientTelemetryData":{
   "category":"PageLoad",
   "pageName":"Account_AAD_NGC_Provisioning",
   "eventInfo":{
    "timestamp":1462676178361,
    "perceivedPlt":2641,
    "networkLatency":1874,
    "networkType":null,
    "precaching":null,
    "bundleVersion":null,
    "appVersion":null,
    "deviceYear":null,
    "isMaster":null,
    "bundleHits":null,
    "bundleMisses":null
   }
  },
  "uiflvr":13,
  "uaid":"872a9ff6a81d00000cad2d871da8d101",
  "scid":100185,
  "hpgid":"Account_AAD_NGC_Provisioning"
 }

 そして、最後に
  https://enterpriseregistration.windows.net/EnrollmentServer/key/?api-version=1.0
 に対して公開鍵をPOSTします。
 {
  "kngc":"UlNBMQAI...snip...tFNEC+U/BbJ+WU0pKD1tAOINB2w==",
  "ak":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
 }

 こんな感じです。


 尚、同様にFiddlerを使ってAzure ADへ参加する際の通信の流れやMicrosoft Passportの流れもキャプチャすることが出来ます。

 例えば、Azure ADへ参加する時は、

  • https://login.microsoftonline.com/WebApp/CloudDomainJoin/4へGET
  • https://login.microsoftonline.com/common/.well-known/openid-configurationでOAuth関連のエンドポイント取得
  • https://login.microsoftonline.com/common/oauth2/authorizeへclient_id:01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9で認可要求
 という流れになります。

 このあたりの細かい話は別途まとめてお話ししたいですね。


4.NGC(Next Generation Credential)のプロビジョニング状態を確認する

 デバイスがAzure ADやオンプレミスのADへ参加しているかどうか、MDMでの管理状態はどうなっているのか、およびNGCがプロビジョニングされているかどうかを簡単にチェックするにはdsregcmd.exeを使います。

 使い方としては、dsregcmd /statusとたたくだけです。
 出力結果は2つのパートに分かれており、デバイスの状態およびユーザの状態を示します。(Windows 10 1511.10586.xxxの場合。14332だともっと項目が増えています)

セクション項目説明
Device StateAzureAdJoinedAzure ADに参加しているかどうか
AzureAdDeviceIdAzure ADに登録されているデバイスのID
AzureAdThumprintAzure ADに登録されているデバイス証明書の拇印
AzureAdIdPAzure ADのIdP
AzureAdTenantIdAzure ADのテナントID
AzureAdTenantNameAzure ADのテナント名
AzureAdMdmUrlIntuneのURL
AzureAdSettingsUrlIntuneのURL
DomainJoinedオンプレADドメインに参加しているかどうか
DomainNameオンプレADドメイン名
User StateNgcSetNGCがプロビジョニングされているかどうか
NgcKeyIdNGCのキーID
WorkplaceJoinedワークプレイスジョインしているかどうか
WamDefaultSetWebSSOに関する状態
WamDefaultAuthorityデフォルトで利用されるWebSSOのオーソリティ
WamDefalutIdデフォルトで利用されるWebSSOのID
WamDefalutGUIDデフォルトで利用されるWebSSOのGUID


特徴的なのは、Workplace Joinはあくまでユーザ単位なので、User State側に分類されているところでしょうか。
例えば、オンプレミスADへドメイン参加した状態でデバイス情報をAzure ADへ同期するとAzureAdJoinedおよびDomainJoinedの両方がYesになります。

参考)Build 14332系でのdsregcmd /statusの結果
 Device StateにEnterpriseJoinedという謎の項目が増えていたり、DRS関係の情報が出てきます。

 User Stateこちらはあんまり変わりません。


5.TPMをクリアする

 これは、TPMが搭載されているマシンを使っている場合に限りますが、キーペアがTPM上に保存される以上、Azure AD DRS上に登録された公開鍵とTPMコンテナ内の秘密鍵の紐づけがおかしくなってしまったらTPMをクリアするのも一つの手になるかも知れません。(根拠はありません。そういう事態に陥ったことはないので)

 とりあえず手順だけを書いておくと、ファイル名を指定して実行(Windowsキー+R)で「tpm.msc」を実行してTPMのクリアを選択して実行するだけです。

再起動が要求されます。

ここで再起動すると起動画面でTPMのクリアが行われます。(手順はデバイスによって異なります)
ちなみにAcerのPCではボリュームUPボタンを押すとクリアされました。

注)ここでTPMをクリアすると当然のことながらマイクロソフトアカウントやローカルアカウントでのログイン時のPINがすべて使えなくなります。パスワードがわからないとPCへログインすらできなくなりますので、慎重に実施する必要があります。同じく、EFSやBitLockerなどに関しても要注意です。


まぁ、色々と書きましたが、トラブルシュートの基本は状態の把握だと思うので、イベントログや通信のキャプチャなどは覚えておいて損はないですね。


おまけ)
ちなみにPIN設定をキャンセルしようとすると以下の画面が出て、頑張って設定させようとしてきます。一旦キャプチャしたいのでスキップしたかったんですけどね。。こういう場合はあえてエラー状態を作っておくと先に進めます。(メッセージの焦った感じがウケます)


[Azure AD]SAMLアサーションへのカスタム属性マッピングがサポート

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

全国7000万人のSAMLフリークの方に朗報です!!

ついに、Azure Active Directory(Azure AD)が発行するSAML Assertionにカスタム属性をマッピングすることが出来るようになりました。

 公式Blogでのアナウンス
  #AzureAD now supports custom unique IDs in SAML tokens for gallery apps
  https://blogs.technet.microsoft.com/ad/2016/05/13/azuread-now-supports-custom-unique-ids-in-saml-tokens-for-gallery-apps/


これで何がうれしいか?というと、例えばSAML AssertionのこれまではnameIdentifierにuserPrincipalNameやmail属性など限定的な属性しかマッピングできなかったが故に例えば、Google AppsのカスタムドメインとAzure ADのカスタムドメイン名をきっちり合わせておかないとSSOできなかったり、特に複数のSaaSアプリケーションを契約していて各SaaSアプリのnameIdentifierが異なる形式だったときに不具合が起きたり、、ということが解消するんです!



 ちょっと視点は異なりますが、以前Google AppsへのSSO時のSAML Assertionのマッピングのワークアラウンドについて書きました。この辺りもカスタム属性マッピングで解消できるポイントの一つです。
  [Azure AD]Google AppsとのSSO設定でのポイント
  http://idmlab.eidentity.jp/2016/02/azure-adgoogle-appssso.html



早速見ていきましょう。

◆準備1)Azure AD Connectで拡張属性の同期ルールを設定する

まずは、Azure AD上のextensionAttributeに値をセットしてあげないといけません。今回はオンプレミスのActive Directory上の属性をAzure AD Connectを使って同期することにします。

変更が必要なのは、
 オンプレAD⇒Metaverse
 Metaverse⇒Azure AD
の同期ルールです。今回は、オンプレADの「説明」属性をAzure ADのextensionAttribute1へ同期することにしたので、まずはAzure AD ConnectのSync Rules Editorを開き、以下の通りルールを作成(編集)します。

方向ルール名Flow TypeTarget AttributeSource AttributeApply OnceMerge Type
InboundIn from AD - User CommonDirectextensionAttribute1descriptionチェックなしUpdate
OutboundOut to AAD - User IdentityDirectextensionAttribute1extensionAttribute1チェックなしUpdate


※本番環境では既存のルールを編集するのではなく、追加ルールを新規作成することをお勧めします。

こちらがオンプレADの説明属性をMetaverseのextensionAttribute1へ同期するInboundルールです。

次にこちらがMetaverseのextensionAttribute1をAzure ADのextensionAttribute1へ同期するOutboundルールです。


◆準備2)オンプレADに属性値をセットする

同期ルールの設定が出来たので、対象の属性(今回は「説明」)に最終的にSAML AssertionのnameIdentifierに入れたい値を設定します。
テストをGoogle Appsでやりたいので、このユーザのuserPrincipalNameとはドメイン名の異なるメールアドレスを説明属性に設定しました。
ついでにmail属性をnameIdentifierへマッピングするテストもしてみたいので、メール属性に説明属性とは異なる値を入れてみます。
これで、マッピングを変えればAzure ADに設定をしていないドメインのGoogle Appsへ、かつnameIdentifierへマッピングする属性をメールと説明で変えれば別のユーザとしてログインできるようになるはずです。


ちなみにこちらがuserPrincipalNameです。先のドメイン名とは異なることがわかります。Azure ADへのログインはこの名前で行います。

実際にこれで同期が完了するとAzure AD上のオブジェクトの状態は以下のようになります。
Azure AD ConnectのConnector Spaceで確認すると、userPrincipalName、mail、extensionAttribute1の値がそれぞれ異なっていることがわかります。


◆準備3)SAML Assertionへの属性マッピングを変更する

いよいよAzure AD上のアプリケーション向けのSAML Assertionに含める属性のマッピング変更を行います。今回はGoogle Appsを例に解説をします。

アプリケーションをひらき、属性メニューからSingle Sign Onを見ると初期状態は以下のようにnameIdentifierにはuserPrincipalName属性のマッピングがされています。

このままだと、Azure AD上のuserPrincipalNameがそのままGoogle Appsへ渡るので、Azure ADとGoogle Appsのドメイン名が異なると動きません。

と、いうことで、ここを先に設定したextensionAttribute1にマッピング変更を行いたいと思います。

nameIdentifier属性の編集ボタンをクリックし、マッピングする属性としてextensionAttribute1を選択します。以前はここで拡張属性を設定することが出来ませんでしたが、今回のアップデートで選択できるようになりました。
※尚、mail属性とのマッピングは以前から出来ていたのですが、少なくとも私の環境ではマッピング変更を行っても実際のAssertionの中身を見ても正しくマッピングがされていませんでした。今回のアップデートでこの部分も解消されていました。



これで準備は完了です。

◆テスト1)Azure ADとは異なるドメインのGoogle AppsへSSOする

通常通り、Google AppsへアクセスするとAzure ADへリダイレクトされるので、Azure AD上のuserPrincipalName(今回だとGoogle Appsとは異なるユーザ名)でログインします。
※当然事前にGoogle Apps側にSSO設定をしています。


すると、異なるドメインにも関わらずGoogle Appsへサインオンできました!
ログインユーザ名を見るとオンプレADの「説明」属性に設定したユーザ名になっていることがわかります。


◆テスト2)SAML Assertionの中身を見てみる

正常にサインオンできたので、SAML Tracerを使って実際にどんなAssertionが発行されているのかを確認してみます。
想定通り、extensionAttribute1に入れた値がNameIDにマッピングされており、Assertionに含まれていることがわかります。


◆テスト3)別の属性にマッピングを変更して別ユーザとしてサインオンしてみる

先ほどはextensionAttribute1に入れた値をnameIdentifierにマッピングしましたが、メール属性にも
別のメールアドレスを設定してあったのを思い出してください。
追加のテストとして、このメール属性をマッピングしてみます。うまくいけば、別のユーザとしてGoogle Appsへサインオンできるはずです。

やり方は簡単ですね。Azure ADのアプリケーションの設定で属性マッピングをmailに変更するだけです。


この状態で先ほどと同じAzure ADユーザでGoogle Appsへサインオンすると想定通り、別のユーザとして扱われました。


◆まとめ

今回は、同じGoogle Appsを使ってテストをしましたが、このアップデートで例えば以下のことが実現でき、Azure ADのSAML対応アプリ連携の可能性がぐっと広がりました。

  • Azure ADとは異なるドメインのSaaSアプリケーションへSSOができる
    • これまではuserPrincipalNameにAzure ADのドメイン名が含まれてしまったので、アプリケーション側のドメイン名とAzure ADのドメイン名を一致させる必要があった。
  • オンプレのアプリケーションなど、従業員番号などメールアドレス形式以外のnameIdentifier属性を要求するアプリケーションとのSSOがやりやすくなった
    • これまでもExtractMailPrefix()関数でuserPrincipalnameのドメイン名を除いた値を使うことはできたが、必ずしもアプリケーションが要求する値がuserPrincipalNameのローカルパートになっているとは限らず、アプリケーション側でのID変更などが必要だった。


[Azure AD Connect]Synchronization Rules Editorが大幅改善

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

コンスタントにバージョンアップを続けるAzure AD Connectですが、これまで同期ルールがUserもGroupもDeviceも同列にずらずらと出てきてしまい、どのルールを編集すると何が起きるのか?の把握が非常に困難でした。

このUIについて、しばらく前から改善要求を挙げていたのですが、直近の1.1.180へのバージョンアップでSynchronization Rules Editorのユーザ・インターフェイスが大幅に改善、かなり使いやすくなりました。

◆以前の課題

先に書いた通り、ずらずらと同期ルールが並んでおり、どのルールを編集すると何が変わるのかがよくわかりませんでした。


◆Version 1.1.180での改善

対象のコネクタ、オブジェクトタイプ、属性等によってフィルタリングができるようになり、例えば「オンプレミスのADのユーザのメールアドレスを変更すると、どの同期ルールが適用されるのか?」といった影響範囲の把握が楽になりました。



例えば、オンプレミスのAD上のsAMAccountName属性が変更された場合に影響があるルールを特定したければ、
・Connector : オンプレミスのAD
・Connector Object Type : User
・Connector Attribute : sAMAccountName
という条件を設定すると以下のように関連するルールが出てきます。



特に実際の本番環境ではデフォルトのルールだけでは運用できないケースも多く、例えばAzure AD Connectのバージョンアップ時に新しいマッピングが追加されたりすることもあるので、カスタマイズの範囲や影響度合いをしっかり把握することは重要です。
今回のエンハンスはそのような環境においては非常に便利なので、上手に活用していきたいですね。

Office365のSAML脆弱性に見るマルチテナントSP実装時の注意点

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

しばらく前に世間を騒がせたOffice365のSAML SP実装に関する脆弱性の話が色々と解説されているので、ちょっと動きを細かく見ていきたいと思います。

 騒動の元ネタ
  The road to hell is paved with SAML Assertions
  http://www.economyofmechanism.com/office365-authbypass.html

 OAuth.jpでのnov氏による解説記事
  Office 365 SAML Implementation Vulnerability
  http://oauth.jp/blog/2016/05/14/office-365-saml-implementation-vulnerability/

 John Bradley氏による解説
  Azure AD security issue
  http://www.thread-safe.com/2016/05/azure-ad-security-issue.html

 Internet2での解説
  Scoped User Identifiers
  https://spaces.internet2.edu/display/InCFederation/2016/05/08/Scoped+User+Identifiers


まぁ、起きていた事象と根本的な原因はIdPが発行したクレームを無条件に信じてしまっていたことにより他のテナントのユーザになりすましてしまうことが出来たよ、ということなので、ちゃんとVerifyしようよ、という話になっています。


◆何が起きていたのか再現してみる

と、言ってもすでにOffice365の脆弱性は修正済みなので、起きていたであろうことをAD FSとGoogle Appsを使って再現してみました。

AttackerとVictimの2つのIdPをAzure ADが収容して、共通のアプリケーションを利用する、という構図をGoogle AppsとAD FSを使って再現したのが以下の図のようなシステム構成になります。


Azure AD相当のAD FSが各IdPから渡ってきたEmailアドレスをストレートにNameIDに変換してアプリケーション(Google Apps)へ渡してしまうので、VictimにもAttackerにも同じメールアドレスのユーザが存在するとAttackerもGoogle Appsへログインできてしまいます。
(もちろん実際のOffice365/Azure ADではもう少し複雑な動きのはずですが、解説のためものすごく簡略化しています)

◆実際の動作

まず、各IdPに同じメールアドレスを持ったユーザを作成します。これは簡単ですね。Active Directoryのユーザとコンピュータからユーザのメールアドレス属性を編集してあげるだけです。

この状態でGoogle AppsへアクセスするとAzure ADに相当するAD FS(今回はHUBと呼びます)へリダイレクトされ、IdPの選択をするホームレルムディスカバリ画面が表示されます。これは、Office365の場合、メールアドレスのドメインパートで自動的に振り分けるような仕組みになっていますよね。


まずは正常系です。
ここでvictimを選択するとvictim側のAD FSへ再度リダイレクトされ、victim側のユーザでの認証が行われます。


もちろんここでログインすると問題なくGoogle Appsへアクセスできます。


今度は先ほどのIdP選択画面でattackerを選択してみましょう。
同じくattackerのログイン画面が表示されるので、attackerのユーザでログインしてみます。


すると、意図しないユーザであるにも関わらずGoogle Appsへのログインができてしまいます。

右上のユーザ名を見るとvictimのユーザとしてログインできていることがわかります。

これが問題です。


◆構成を見てみる

では、この環境がどのように構成されているのか見ていきましょう。

まずはHUBとなるAD FSの構成です。

Relying Partyには当然Google Appsが構成されています。

HUBとなっているので、IdPから渡ってくるEmailアドレス属性をNameIDへマッピングして出力を行うクレーム・ルールが設定されています。


次に、HUBのIdP(Claim Provider)設定を見てみます。マルチテナントで構成されているので当然victimおよびattackerがIdPとして登録されています。

そして、各IdPのクレーム・ルールを見ると単純に各IdPから渡ってくるEmailアドレスをパススルーしています。ここが大きな問題です。


取り敢えず問題は置いておいて、次に行きます。

次は各IdP側のRP設定を見ていきます。
当然、victim側にもattacker側にもRPとしてHUBが登録されています。

こちらがvictim側です。

こちらがattacker側です。

この辺りは特に不思議なところはありません。
クレーム・ルールも共通で以下の通り、ADのEmailアドレスをそのまま発行しています。



構成はこれで終わりです。
次はSAML Tracerを使って動きを見てみます。

◆SAML Assertionの中身の確認

まず、正常パターンです。victimで認証されてSAML ResponseがHUBへ返ります。


属性ステートメントにメールアドレス属性が正しく入っていることがわかります。

同様にattackerも見てみます。


先のルールだとattackerからもメールアドレス属性をそのまま発行することになるので、HUBへのSAML Responseにはメールアドレスが入ります。これは正常な動きです。

では、attackerからのResponseを受けたHUBがGoogle Appsへ返すSAML Responseを見てみます。


いけませんね。NameIDにvictimのメールアドレスが入ってしまっています。

Google Appsから見るとこのResponseはあくまでHUBから返ってきており、AssertionのIssuer(HUB)および署名(HUBのAD FS Token Sign)の検証が出来てしまうので、正しいAssertionだと認識してしまい、ログインが完了してしまいます。

◆どうやってなりすましを防ぐか?

では、ここからが対策です。
要するにHUBが配下のIdPから飛んでくるクレームを無条件に上位のアプリケーションへ発行してしまっているのが問題なので、フィルタリングを入れておきたいと思います。

具体的には、victimから飛んでくるメールアドレスはvictimの、attackerから飛んでくるメールアドレスはattackerの固有のドメインパートを持っている、という暗黙の前提の通りになっているかどうか?を確認し、正しければスルーしますし、異なっていたらフィルタリングしてしまいます。


AD FSにおいて、この設定はClaim Providerのクレーム・ルール設定で行います。

以下がvictim側の設定です。


次にattacker側の設定です。


この状態における実際のAssertionはどうなっているでしょうか?

まずは正常系(victim)です。メールアドレスがvictimorg.xyzで終わっているのでスルーされてAssertionに値が入ります。


しかし、attacker側ではメールアドレスがattackerorg.xyzで終わることが期待されるところにvictimorg.xyzが入ってきているのでフィルタされ、Assertionに値が入りません。

こうなるとGoogle Appsへのログインは失敗し、なりすましはできなくなりました。


◆対策とまとめ

結局のところは、「外部のIdPとフェデレーションを行う際はIdPの信頼性の担保が出来ているかどうかを確認すべし!」という話なんですが、「じゃあ、どうやって?」というところで例えばメールアドレスを使うOffice365やGoogle Appsなんかの場合は、暗黙の前提となっているドメインパートに正しい値が入ってくるであろう、という部分を排除してきっちりとフィルタリングをするという対策が必要になりますし、他の属性を使う場合でも、その属性に入ってくる値は当該のIdPで正しさが保証されているものなのか?を中間IdPやRP側でも確認をすることは必須である、ということが出来ます。

オンプレミスのActive Directoryの信頼関係でも同じですが、技術的につながるからと言って無条件につなぐと当然セキュリティ・ホールが出来上がるので、文字通り「信頼」をするためには必要な対策をちゃんとしましょう、ということです。

また、これはSAMLでもws-federationでもOpenID Connectでも全く同じことですので、うちのサービスはSAMLじゃないから大丈夫、と言ってスルーしないでください。



参考までに、ですがAD FSでは外部IdPから発行されたクレームを無条件にパススルーしようとすると以下のワーニングが表示されます。


ワーニングにはちゃんと意味があるので、みなさん従いましょうね。

[Azure AD Connect]汎用LDAPやSQLなどの管理エージェントが同梱

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

全然気が付いていなかったのですが、先日のAzure AD Connectの最新バージョン(1.1.180)から以下の管理エージェントが同梱されています。


  • Generic LDAP
  • Generic SQL
  • PowerShell
  • Web Service


これが何を意味するか、というとこれまではあくまでオンプレミスのActive DirectoryからAzure Active DirectoryへのID同期を行うためのツールであったAzure AD Connectが「LDAPやSQLなど他のデータ・ソースを含めID同期を行うことが出来るようになった」、ということです。

Azure AD Connectにディレクトリ同期ツールが統合された際に、カスタムシステムとの接続を将来サポートする、という宣言はありましたが、ようやく第一歩を踏み出した、ということです。

 参考)カスタムシステムとのID同期は「FR(将来的にサポート)」となっています。
 https://azure.microsoft.com/ja-jp/documentation/articles/active-directory-hybrid-identity-design-considerations-tools-comparison/


Synchronization Managerで管理エージェントを作成すると、Azure ADとAD以外への接続を行う管理エージェントが出てきます。


拙作のカスタムのエージェントを導入してみました。
 汎用REST API管理エージェント
 https://restmafim.codeplex.com/



現状まだオフィシャルの文書は出てきていませんが、今後はAzure AD Connectを中心としたハイブリッドID管理がますます拡大していくことになると思いますので、FIM/MIMの知識がようやく?必要な世の中が来たのかも知れませんね。(ハードル高!)



[MIM]June CTPで遂にExchange Onlineをサポート

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

前回の4月版のCTPに続き、6月度のプレビュー版が公開されました。

 公式アナウンス
  Now Available MIM 2016 June Preview
  https://blogs.technet.microsoft.com/iamsupport/2016/06/03/now-available-mim-2016-june-preview/

 ダウンロードはこちら(要登録)
  https://connect.microsoft.com/site433/Downloads


なんといっても今回の目玉は、MIM Serviceの承認用メールにExchange Onlineが使えるようになった、という点です。

このエンハンスリクエストはずいぶん前から上がっていたのですが、なかなか実装されなかったので、待っていた人も多く、早く正式版にも実装してもらいたい機能ですね。

他には、

  • セルフサービス・グループ管理やプロファイル管理ページのChromeやスマホブラウザの対応
  • Windows Server 2016 Technical Preview、SQL Server 2016、SharePoint 2016への対応
  • Windows Server 2016の新機能に対応した特権アクセス管理用のコマンドレットの追加

が更新ポイントとして挙げられています。

更新のペースが速いのでなかなかテストができませんが、触ってみないと。。。

[告知]今週末は仙台でアイデンティティ!

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

ぎりぎりの告知になりますが今週末(6/18)、マイクロソフト MVP の有志による東北復興支援イベントが開催されます。

公式サイト
 Rebirth!東北
 http://retohoku2016.azurewebsites.net/


場所が仙台国際センターなので、いきなりは行きにくいとは思いますが、何しろ登壇者がゴージャスなので、週末の予定をキャンセルしてでも顔を出す価値はあると思います。

例えば、午前中のキーノートはマイクロソフトの西脇さん、澤さん、榊原さん、、と公式イベントでもここまで人がそろうことって中々ないんじゃないかな~と思うような顔ぶれです。(当然午後もJavaの寺田さんをはじめそうそうたるメンバです)


そんな中、私はたまには概念論を話そうかな~と思っていて、「オンライン・アイデンティティの自己コントロールと活用」というタイトルで MVP の齋藤さんと一緒に話をします。



以下、概要です。
昨今のtwitterへの不適切画像のアップロードやGoogleサジェストによるオンライン・アイデンティティへの望まないラベル付けが容易に行われてしまう一方で、採用など人事領域へのビッグデータ、人工知能の適用などオンライン・アイデンティティの重要性はますます大きくなってきています。
本セッションでは企業活動においてオンライン・アイデンティティの活用が進む中、どのように自身でコントロールしていくべきなのか、また企業側はどのように活用していくべきなのか、について議論します。

先週ニューオリンズで開催された Cloud Identity Summit 2016でも頻繁に語られた Self-Sovereign Identity(自己主権型アイデンティティ)とか Respect Network の話です。私もそこまで詳しく知っている分野でもなく、かつかなり概念的なのでいつものSAMLやOpenID Connectネタとは違った眠りをご提供できるのではないかと思っております。はい。


是非、仙台でお会いしましょう!

Rebirth! 東北の資料を公開しました

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

2016年6月18日に仙台で開催されたMicrosoft MVPによる東北復興支援イベント、「Rebirth! 東北」で、オンライン・アイデンティティの自己コントロールと活用について話をしてきました。

今回は、全編ノン・テクニカル、かつ人事(タレントマネジメント)領域でのコンサルティングのプロフェッショナルであるMVP for Business Solutionの齋藤さんとのディスカッションを中心にセッションを進めたので、資料だけでは何もわからないとは思いますが、一応資料を公開しておきます。




テーマと議論の流れはこんな感じです。

  • イントロ:オンライン・アイデンティティの現状とその課題
    • そもそもアイデンティティって自分で認識できるもの、他人が認識することによって形成されるものなど色々な要素によって構成されている
    • 特にオンライン・アイデンティティはコンピュータの特性上、忘れられない、という特徴を持っており、しばしば炎上やプライバシ上の課題を産む
    • そんな中、オンライン・アイデンティティをビッグデータとして収集・活用するという動きも出てきている
    • 自己主権型アイデンティティ(Self-Sovereign Identity)という考え方が注目を集めている
  • ディスカッション:グローバル企業におけるチームビルディングに関する課題と対応
    • 強いチームを作る際、採用活動がキーとなる
    • グローバルで役に立つ人材を獲得するためには「見えない特性=アイデンティティ」を見抜く必要がある
    • 体系的にスキルセットやポテンシャルを洗い出し、活用していく方法が実用化されてきている


ディスカッション側は内容的に公開しずらいものばかりなので、とりあえず資料と上記の議論から類推してみてください。



Blockchain、Hashgraphとアイデンティティ

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

先日(6/24)のOpenID Foundation Japan / Enterprise Identity Working Groupの成果発表会の場で先にニューオリンズで開催されたCloud Identity Summit 2016(CIS)の参加報告をしました。

報告したのはCISで個人的に一番の注目ポイントだった分散セッション管理とBlockchain、Hashgraphの話です。



内容としては、ハイブリッドなSSOの普及に伴い、継続的認証(Continuous Authentication)やその前提となる分散セッション管理の重要性が高まってきていて、アイデンティティレイヤの下に整合性のとれた元帳レイヤ(要は分散DBのレイヤ)が必要で、その手段の一つとしてBlockchainの欠点をうまく補った技術として「Hashgraph」が密かに注目されている、という話です。



HashgraphについてはSwirlds社が論文を発表しているんですが、いかんせん難しい概念なのでBlockchainとの違いを見ながらコンセプトと特徴を解説しました。



Blockchainは不整合が出た枝は切り捨てるので、左の図のような幹から枝が出ては伐採されるイメージ、Hashgraphはあくまでgraphなので関係性を紡ぎながら時系列に伸びていくので右の図のような絡み合ったイメージ、というのが大きな違いです。


細かい内容は以下に資料を公開したので、そちらと資料中にあげている参考URLをご覧ください。
今回は30分のセッションだったので、あまり深堀りは出来ませんでしたが、Swirlds社からHashgraphのSDKがもうじき公開される予定という話もあるので、次回は実際の動きを見てより細かいレベルで解説ができるといいなぁ、と思っています。





[FIDO]Injectorでパスワードの使いまわしや簡単なパスワードの利用を防止する

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

先日のOpenIDファウンデーション・ジャパン、Enterprise Identity Working Group(EIWG)の成果報告会で、Cloud Identity Summit 2016(CIS)への参加についてBlockchainとHashgraphとアイデンティティに関する報告をさせてもらいました。

 資料等は前回のポストで。
 Blockchain、Hashgraphとアイデンティティ
 http://idmlab.eidentity.jp/2016/06/blockchainhashgraph.html


実はCISではセッションの他にExpoという形で各社がソリューションを持ち寄る展示会があり、その中でFIDO関係のブースで出展をしていたBluink社のInjectorというデバイスがとても面白かったので、取り寄せてみました。

Injectorには、Injector USB DeviceとInjector Miniという2種類がありますが、あんまり機能差がなさそうなので、持ち運びを考えてInjector Miniを購入しました。

公式サイトのストアで$29.99+日本への送料($15.00)の合計$44.99で購入できます。


2週間くらいで届いたので、早速試してみます。

◆何をするものなのか?

まず、そもそもこれは何をするものなのか?というと、「スマートフォンアプリに各種ログオン情報を記憶させておき、Injector(ドングル)を挿したPCでの各種ログインをスマホ経由で行う」ためのものです。

1.IDとパスワードの入力を代行する入力デバイス

(公式サイトの解説より)


簡単に言うと、PCに挿したBluetoothアダプタが入力デバイスとして認識され、スマホからログインに必要なキーストローク情報を送り込む、というかなり原始的な?仕組みです。
尚、この仕組みをとるのでPC側には基本的には何の追加ソフトウェアもいりません。
(QRコードを使って対象アプリケーションの選択を簡素化したい場合はブラウザのアドオンを入れる必要がありますが、自分でスマホ上で対象のアプリケーションを選択するなら本当に何もいりません)

試しにLinkedInへのログインを動画にしてみました。



2.FIDO U2Fに対応した2要素目のデバイス

また、違った一面としてFIDO U2Fに対応しているので、GoogleなどU2Fに対応したサービスへのログイン時の2要素目としても利用が可能です。

こちらも同じくGoogleへのログイン時の2要素目として使ってみました。

◆まずは準備

では、早速使ってみます。
準備として、スマホ用のアプリケーションをダウンロード~インストールします。



アプリを立ち上げると、マスタパスワード(このアプリ自体の起動パスワード。Touch IDも使えます)の登録およびInjectorデバイスとのペアリングを行うことになります。
(この段階でPCへInjectorデバイスを挿入します)

尚、このペアリングですが、工場出荷時はオープン状態(どのスマホとでもペアリング可能な状態)のはずなんですが、私の手元に届いたものはどうしてもうまくペアリングできず、サポートとやり取りをしてリセットをしてもらいました。(15分くらいでリセット用のコードを発行してもらいました。現地は土曜日の昼頃だったはずなんですが、驚異的なスピードです!)


うまくいくと、こんな感じでデバイスが登録された状態になります。




◆ログイン対象を登録

これでアプリとデバイスの準備が出来たので、次はアプリケーションの登録です。

アプリでAdd Credentialというメニューがあり、ある程度のアプリケーションはプリセットされているので、そこから選択すると簡単に登録ができます。


ここでアプリを選んでログインに使うIDとパスワードを登録していく、という形をとります。
尚、注意点ですが先に書いたとおり、キーストロークを送り込むという仕組みになっている以上、キーボード配列が違うと特に記号がうまく入りません。
これを使うときはPCを英語キーボードモードにしておきましょう。

後は先の動画で紹介したように各アプリを開いてスマホ側でログインをするだけです。



◆FIDO U2Fとしての登録

次は、基本的な使い方に加えてFIDO U2FデバイスとしてInjectorを登録してみましょう。
尚、これも注意点なんですが、U2Fに使う場合、キーストローク入力型の基本的な使い方との両立が現時点でうまくいっていません。(私の環境の問題かもしれませんが)
基本的な使い方の方に戻したければU2Fとしての登録を一旦削除してあげる必要があります。


動きは先に動画で紹介したので、GoogleへのInjectorデバイスの登録の方法を簡単に紹介します。基本はFIDOなのでYubikeyなどと同じくデバイスを事前に登録しておくだけです。

Googleの2段階認証セットアップを開き、セキュリティキーの登録を行います。
基本は画面の指示に従ってキーの挿入をし、アプリケーション側に表示されるRegistration確認を行うだけです。

(Googleのセキュリティキーの登録画面から指示に従いデバイスを登録する)


(うまく認識するとアプリに登録確認が出てくるので回答する)




これで完了です。
後は2段階認証の際にデバイスを挿してアプリで回答するだけです。


◆使ってみた感想

意外と良いかもしれません。
LastPass見たいなサービスに依存するものもなく、あくまでペアリングされたデバイスに依存するので、オフラインでも使えますし(それこそWindowsやMacへのログインにも使えます)、キーストローク入力するだけの簡単な仕組みなので対象のアプリケーションを選びません。
これで各アプリ向けのパスワードは本当にランダムなものを使ってしまっても問題ないかもしれませんし、ブラウザにパスワードを覚えさせる必要もありません。
(忘れた場合、Injectorの設定データのバックアップからパスワードを復元するためのツールが提供されています)

ただ、課題がないわけでもありません。
具体的にはあくまでUSB入力デバイスなので、モバイルのネイティブアプリやブラウザでの利用は出来ません。ネイティブアプリの場合はアプリケーションパスワードなどをうまく利用すればよいでしょうが、ブラウザの場合は困ってしまうので今後に期待です。
(現状でもiOSのSafariの場合はIntentでアプリを呼び出してキー入力させる様にできるみたいです)


[Azure AD]AAD Connect Health for AD DSでオンプレミスのADを監視する

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

Azure Active Directory(Azure AD)やPing ONEをはじめとしたクラウド上のID基盤(IDaaS)が流行ってきていますが、どのソリューションも現状はオンプレミスにActive Directoryが存在していることを前提として構成が組み立てられています。

これは、2014年のVittorio Bertocci氏へのインタビューでもオンプレミスのActive Directoryの普及率は95%を超えている、という発言があるとおり、エンタープライズ分野へIDaaSを適用する際は既存のActive Directoryを避けて通れず、どのようにシームレスにオンプレミスからクラウドへ橋渡しをするか?がフォーカスされているため決して不自然なことではありません。

しかし、こうなってくるとクラウド側の基盤がグローバルでレプリケーションされていて高い可用性を持っていたとしても、システム全体を見た時にはオンプレミスのActive Directoryがボトルネックや障害発生ポイントとなってしまいます。

と、いうことでマイクロソフトはハイブリッドID基盤をなるべく一か所で監視・管理できるようにしたり、セキュアに運用できるように色々と関連ソリューションを出しています。


脅威/リスク対象ソリューション
稼働状況監視AD FSAzure AD Connect Health for AD FS
AD DSAzure AD Connect Health for AD FS
不正アクセス検知AD DSAdvanced Threat Analytics
特権ID管理AD DSMicrosoft Identity Manager 2016


今回は、新たにPublic Previewが公開されたAzure AD Connect HealthによるActive Directory(AD DS)の稼働状況のモニタリングについて見てみたいと思います。

 公式Blogでの発表
 Introducing #AzureAD Connect Health for Windows Server AD
 https://blogs.technet.microsoft.com/enterprisemobility/2016/07/19/introducing-azuread-connect-health-for-windows-server-ad/


仕組みとしては、監視用のエージェントをAzure PortalのAzure AD Connect HealthからダウンロードしてオンプレミスのAD DSサーバへインストール・構成するだけなので非常に簡単です。


◆エージェントを入手する

新ポータル(https://portal.azure.com)のダッシュボードにAzure AD Connect Healthがない人は追加しておきましょう。


Azure AD Connect Healthを開くとAgent for AD DSのダウンロードができるようになっていますので、Get toolsをクリックしてAgentモジュールをダウンロードします。


◆エージェントをインストールする

次は、監視対象のドメインコントローラへログインしてモジュールをインストールします。
ダウンロードしたモジュールをドメインコントローラへコピーしてインストーラを実行します。

この際、以下の前提事項があるので準備をしておいてください。。

  • ドメインコントローラ上でビルトインアカウントによるInternet Exploreが実行できること
  • microsoftonline.com、microsoftonline-p.com、micorosoft.com、windows.netのCookieを受け入れる設定になっていること(windows.netはいらないかも)
  • Azure ADテナント上でグローバル管理者権限を持つ組織アカウント(マイクロソフトアカウントではなく)が存在していること
  • ドメインコントーローラからAzureへの上り通信がブロックされていないこと

特に、Windows Server 2016では、IEの設定が厳しいのでCookieの受け入れの設定を確実にしておかないとエージェントのセットアップに失敗します。


ダウンロードしたファイルを実行すると、インストールが始まります。


インストール自体は非常にシンプルなのですぐに終わります。


◆エージェントを構成する

インストールが完了したらAzure ADのテナントへ接続し、エージェントを登録します。


うまくIEの構成がされていれば、Azure ADへのログインダイアログが起動してきますので、「組織アカウント」でログインします。(マイクロソフトアカウントだとエラーが出ます)

以下、エラーになった場合のメッセージです。
<Cookieの受け入れ設定が出来ていない場合>


<マイクロソフトアカウントでログインした場合>




うまく構成ができると、以下のメッセージが出ます。



◆ポータルより状態を監視する
インストールが完了するとドメインコントローラに関する情報がエージェントによりAzure AD Connect Healthへアップロードされます。


各種状態を確認することが出来ます。
<FSMO、サイト、GCなど>


<機能レベルなどのプロパティ>


<認証要求数、レプリケーションステータスなど>


ちなみに監視対象のドメインコントローラを停止すると以下のようにアラートが表示されます。
(検知するまでにしばらく時間がかかります)


これでHybrid ID基盤のオンプレミス側の構成要素であるAD DSの状態監視もクラウドから実行できますので、別途監視ツールや運用ツールを用意する必要性がぐっと下がりますので、安心して基盤の運用ができますね。


攻略! #PokemonGo のログインと OpenID Connect

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

世の中 Pokemon Go / ポケモン Go 一色ですが、いかがお過ごしでしょうか?

あいにく私の住んでいる地域は過疎化が進んでおり、ポケモンがほとんどおりません・・・・



おかげで全然レベルが上がらないので、ジムなどには無縁な平和な生活を営んでいるわけなんですが、果たして Pokemon Go のログオンは平和なのか?という ID 厨なら必ず抱く疑問を解消すべく、家族で地元の夏祭りに参加している横で解析をしてみました。

公開当初はフルアクセスを要求するアプリだったので、プチ炎上したりしましたが現状は解消されたということなので、パケットキャプチャしてみます。

 参考)ポケモン Go がフルアクセスを要求していた件。



では早速、Pokemon Go へのログインの仕組みを見ていきましょう。
Pokemon Go ではいわゆるローカルアカウント(Pokemon Trainer Club)と Google アカウントを使ってログオンする2つの仕組みが用意されています。

色々な Web サイトを見ると、専用の Google アカウントを作るべきである、というような記事を見かけたりしますが、根拠として先のとおり、すべて権限を要求するから、という理由が挙げられています。

 参考)ポケモン Go をプレイするなら専用の Google アカウントを作るべき


まぁ、公式発表によると権限周りは修正されたということなのですが、実際にどのような権限が要求されているのか、ログオン~ユーザ登録のシーケンスにおいて何が起きているのかを見ておきたい、ということで解析してみましょう。

◆準備

基本的に通信をキャプチャすることになるので、プロキシを用意して HTTP/HTTPS の通信を覗いてみたいと思います。今回はiOS版を使ったので、PC にインストールした Fiddler をプロキシとして使うように iOS の Wifi 設定を行います。

今回は、PC で Fiddler を立ち上げ、リモートクライアント向けのプロキシとして動作するように設定を行いました。

Tools より Fiddler Options を開き、Connections タブへ以下の通り設定を行います。
- Fiddler Listen Port : 8888(デフォルト)
- Allow remote computers to connect : ON

これで PC にインストールした Fiddler がプロキシとして動作するようになります。
ちなみに、 Windows Firewall が邪魔をするので、外部からの 8888 への通信を許可するように設定をしておく必要があります。

また、HTTPS 通信を復号するためには、Fiddler の使う証明書を iOS が信頼するように構成する必要があるので、 Fiddler で証明書をエクスポートし、iOS 側へ送信、インポートしておく必要があります。(細かい手順は割愛します)


次は、iOS 側の設定で、Fiddler をプロキシとして使うようにしまう。
設定から Wifi を開いてプロキシサーバのアドレスとポートに Fiddler を動かしている PC のアドレスと先のポート番号を指定します。




これで準備は完了です。

早速、Pokemon Go をインストールしてサインアップしてみます。

◆Google アカウントでサインアップした場合の要求スコープは?

Pokemon Go を起動し Google アカウントでサインアップを選択します。


ここで、Googleを選択した時の通信キャプチャを見ると、以下のようなリクエストが飛んでいます。


GET https://accounts.google.com/o/oauth2/auth
?client_id=84....snip......apps.googleusercontent.com
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
&response_type=code
&scope=openid email https://www.googleapis.com/auth/userinfo.email HTTP/1.1

注目すべきは scope パラメータです。OpenID Connect のリクエストなので当然 openid は含まれるとして、email および https://www.googleapis.com/auth/userinfo.email が含まれています。
Google の OpenID Connect 関係のドキュメントを見ると、email と は同じスコープで、メールアドレスの表示だけを要求していることがわかります。

画面上に表示されるとおりですね。

ここで、許可をクリックすると token エンドポイントへ認可コードが POST される普通の OpenID Connect の流れが続きます。

POST https://accounts.google.com/o/oauth2/token HTTP/1.1

ボディ
client_id=84...snip...alem.apps.googleusercontent.com
&client_secret=NCjF1...snip....uL7
&code=4/D7vS...snip....i7h1Q_njLCM
&grant_type=authorization_code
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
&scope=openid email https://www.googleapis.com/auth/userinfo.email


結果、access_tokenやid_tokenが返ってきます。

{
  "access_token" : "ya29.Ci8pAxbo....snip...FA",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "id_token" : "eyJhbGciOiJSUzI1....snip.....XsXHNwQ",
  "refresh_token" : "1/lCAJhP...snip....TM"
}


もちろん id_token の中身を jwt.ioなどで覗くといい感じで Google アカウントの情報が出てきます。




さて、問題はこの後です。
email をスコープとして access_token を要求しているので、必要以上の情報を Google が提供することはありませんが、どのような要求が Pokemon Go から実施されているのでしょうか?

結論、サインアッププロセスの中で access_token が使われることはなく、 id_token の中のメールアドレスだけを使っているように見えます。

続くリクエストは運営元の Nianteclabs.com への POST なのですが、所謂 RESTful API 的に JSON などがやり取りされるわけではなく、バイナリデータが飛び交うのでこれ以上の解析はしませんが、見えている範囲では、 id_token がそのまま POST されているようです。

POST https://pgorelease.nianticlabs.com/plfe/rpc HTTP/1.1

ボディ
<いろんなバイナリ情報>
google
   eyJhbGciO....snip.... <- div="" id_token="" post="">->


と、いうことでやっぱり OpenID Connect でのログインおよびメールアドレス情報だけを渡している、ということで、まぁ大丈夫そうです。


◆まとめ

今回はあくまでサインアッププロセスのみを見ているので、続く処理で何が行われているかはわかりませんが、とりあえずという意味では以下のことが言えると思います。

  • Pokemon Go のログイン・サインアップには OpenID Connect が採用されている
  • email アドレスのみを読み取る Scope で access_token が要求されているが、実際は id_token だけが使われている
  • 結果、メールアドレスくらいしか連携されていなさそうなので、別アカウントを作ったりする程にセンシティブにならなくてもよさそう?


注記)
  • 解析はあくまで一部分のみを対象としているので、他の処理で色々と情報を収集している可能性があります
  • 本解析は Pokemon Go のサービスを攻撃することを意図したものではありません
  • 本ポストが Pokemon Go のサービス規約に違反するなどし、サービス提供者の意図にそぐわない場合は本ポストを削除する可能性があります

続!#PokemonGo のログインと OpenID Connect

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

昨日に引き続き Pokemon Go / ポケモン Go です。

だいぶレベルあがりました。


昨日のポストに対する皆様の反応を拝見していると、iOS版はわかったから、Android版はどうなの?という意見が多かったので、今回はAndroid版です。

また、結局 Pokemon Go はどういう権限を要求しているのか?について若干混乱が見られたので、そのあたりもついでに整理していこうと思います。

では、早速見ていきます。

まずは、Android版の動きです。

◆環境設定

昨日のiOSと同様に、Wifi設定よりProxyサーバとしてPC上で動かしているFiddlerを使うように設定します。


準備はほぼ同じなので、さっそくGoogleでログインしてみます。


◆ログイン時のトラフィックの違い

実際にログオンしてみるとiOSとは大きな違いがあることがわかります。
iOS版では、WebViewが立ち上がりGoogleアカウントでログインする必要がありますが、Android版ではOSにログオンしているGoogleアカウントがシームレスに使われるため、改めてGoogleへログインする必要がありません。

トラフィックをキャプチャすると、android.clients.google.com/authに対して直接client_idなどをPOSTしてid_tokenを受け取っています。

POST https://android.clients.google.com/auth HTTP/1.1

POSTデータ
androidId=3798d3c8e02a1cce
&lang=en_US
&google_play_services_version=9256438
&sdk_version=23
&device_country=jp
&client_sig=321187995bc7cdc2b5fc91b11a96e2baa8602c62
&callerSig=321187995bc7cdc2b5fc91b11a96e2baa8602c62
&Email=reign.of.pharaoh%40gmail.com
&service=audience%3Aserver%3Aclient_id%3A82..snip..b.apps.googleusercontent.com
&app=com.nianticlabs.pokemongo
&check_email=1
&token_request_options=
&callerPkg=com.nianticlabs.pokemongo
&Token=oauth2rt_1%2FBF_GAY86cPwrwUgpf2HZd3pV71FRTE0q-YgCePsVp2E

ちなみに、iOS版とはclient_idが違うんですね。
このリクエストに対して、HTTP 200で以下のデータが返ってきます。Authにid_tokenが入ってきています。

Auth=eyJhbGciOiJSUzI1N...snip...d9LC7FGaQ
issueAdvice=auto
Expiry=1469374236
storeConsentRemotely=1
isTokenSnowballed=0

jwt.ioでdecodeするとちゃんとid_tokenになっています。



以降のAPIコール時はiOSと同じくid_tokenがPOSTされているので、Android版でもid_tokenに乗っている情報以外(iOSと違って、メールアドレス以外に姓と名がid_tokenに含まれます)はサービスにはわたっていないことがわかります。

まぁ、一安心ということで。



◆結局どういうパーミッションが求められているのか?

前回も今回もOpenID Connectという文脈でPokemon GoアプリケーションがGoogleへどのような情報や操作を要求しているのか?を見て、とりあえず新規にGoogleアカウントを作らなくてもよさそう、という結論に達しました。

しかし、前回のポストに対するコメントとして、連絡先へのアクセスが要求されたりするので、やっぱりアカウントは新規に作る方がいいのでは?みたいなコメントもありました。

確かにAndroid版を見ると、アプリが端末に対して連絡先へのアクセスを要求しています。
※理由はよくわかりませんが。。。
<iOS版>

<Android版>


ここは非常に混乱を招きやすい部分ですが、結論から言いますとアプリケーションが端末に対して要求している権限と、Googleアカウントでログインする際にGoogleに対して要求する権限は全く別のものであり、Googleアカウントの新規作成うんぬん、という話は後者にしか関係しません。(いわゆる、OAuthのscopeパラメータの話ですので)

ここで言う連絡先へのアクセスは前者の端末インストール時の話なので、連絡先へのアクセスが嫌なのであれば、Googleアカウントを新規に取り直すのではなく、専用端末を新規に購入すべきである、ということになります。

まぁ、この辺りは確かにユーザにとってわかりにくいですね。


Viewing all 769 articles
Browse latest View live