Help us understand the problem. What is going on with this article?

Azure Active DirectoryへiOSアプリでログインする

More than 3 years have passed since last update.

以下の様なことをやるためのサンプルを、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

roba4coding
プログラマ&ディベロッパー&ハッカー。エンジニアではありません。主にアプリの開発をやってます。勉強会には一切顔を出さずウェブで済ませて独学。家に技術本らしきものは一冊もありません。記事の内容を実装に取り入れたことによる損害について当方は一切責任を負いませんのでご了承ください。
https://note.mu/roba4coding
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away