以下の様なことをやるためのサンプルを、MSさんが提供しているのですが、どうにも動かずハマりたおしました。
- Azure Active Directoryに登録したアカウントでログイン
- アクセストークンを得る
- アクセストークンを使ってGraph APIをキックし、ユーザー情報を得るなどする
動かなかったMSさんのサンプル
https://azure.microsoft.com/ja-jp/documentation/articles/active-directory-devquickstarts-ios/
ソースハックしたり色々やってなんとかできるようになったので、githubにサンプルコードをpushしました。そのサンプルコードの説明をここでしたいと思います。
https://github.com/stack3/STAzureADLoginSample
ちなみにXcode 8 + iOS 10 + Swift 3で書いてます。またGraph APIのキックはAFNetworkingを使っています。
準備
まずAzure Portalでゴニョゴニョします。以下はクラッシックポータルじゃなく最新の方で説明します。(MSさんはクラッシックで説明されてましたが)
Azure Active Directoryはすでに作成済みで、そこへのユーザー登録もしているものとします。
連携するiOSアプリの登録
- Azure Portalへログインし、Active Directoryを選択
- アプリの登録を選択
- 上にある追加を選択(わかりにくい)
- 以下のように入力
- 名前: 任意
- アプリケーションの種類: ネイティブ
- リダイレクトURL: aaa://bbbのフォーマット。今回はstazureadloginsample://auth-callbackとする
- 作成を押す
アプリに認証のための権限を与える
- 作成したアプリを選択
- 必要なアクセス許可を選択
- 上にある追加を押す
- APIを選択しますで、Microsoft Graphを選択を押す
- アクセスの有効化で、Read all users' basic profilesをチェックし、選択を押す
- 実際は必要に応じてチェックするものが変わる
- 今回は、ユーザーの情報を得られれば良い
- 完了を押して保存
以下、iOS側で使うのでメモっておく
- 作成したアプリを選択すると、アプリケーションIDが表示されるのでメモっておく
- アプリの登録を選択
- 上にあるエンドポイントを選択(わかりにくい)
- 以下をメモっておく
- WS-FEDERATION サインオン エンドポイント
- MICROSOFT AZURE AD GRAPH API エンドポイント
サンプルコードの実行
先程書いたように、私が作ったサンプルコードがgithubにありますので、ダウンロードしてください
https://github.com/stack3/STAzureADLoginSample
- AzureConfig.swift.txtファイルをAzureConfig.swiftにRenameして、TODOになっている箇所を、先程のメモにしたがって埋めて下さい
- Info.plistのURL typesあたりに、コールバックを受け取れるようにstazureadloginsampleが設定されていることにも注目
- 実際の開発ではここを独自のものにし、Azure PortalのリダイレクトURLも合わせます
- ビルドして実行
- プロビジョニングプロファイルまわりの設定も必要かと思います
ログイン
- Login to Azure ADボタンでログイン
- 初回はメールアドレスとパスワードの入力が求められます
- Azure Active Directoryに登録したユーザーでログインします
- 2回目からはキャッシュが働いて、ログインは求められません
- これでトークンがメモリに保存されます
- Get Userボタンでユーザー情報を取得
- TextViewに取得したユーザー情報が表示されます
- Clear Login Cache
- ログインキャッシュをクリアして、ログイン時に再度メールアドレスとパスワードが求められるようになります
コードの説明はコード側のコメントを読んでください。多分何をやっているかはわかると思います。
Azure AD Graph API Referenceは以下にあります。
https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/api-catalog