LoginSignup
6
6

More than 5 years have passed since last update.

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

Posted at

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

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6