908 views(since 2013/10/08)

Office365の情報を取得するデスクトップアプリケーションの開発

AzureADにサインインし、Office365の情報を取得するために必要な
リフレッシュトークンとアクセストークンを取得する 簡単なアプリケーションの作り方を記載します。

用意する物

・VisualStudio 2013
・Office365 (SharePoint、Azure AD)

■リフレッシュトークン?アクセストークン?

2種類トークンという言葉が出ておりますが、
リフレッシュトークン=ログインしたという情報
アクセストークン=使用可能なリソースの情報(権限)
という形で覚えると分かりやすいと思います。

■AzureADの設定

Office365の情報を使用する際は、AzureADにOffice365のアプリケーションを使えるようにする設定が必要なので、
Office365の管理者またはAzureポータルサイトからAzureADに入ります。
設定できない場合はOffice365の管理権限を持つ方に相談してください。

1.Azure内のActiveDirectoryに入り、ネイティブアプリケーションを作成
2.作成したアプリの構成を確認し、「リダイレクトURI」と「他のアプリケーションに対するアクセス許可」を変更する
※初期ではWindows Azure Active Directoryだけ入っているので、アプリケーションの追加を押して追加する
3.設定が完了したら保存する

azureAD

赤丸の部分が追加した情報です

■リフレッシュトークン、アクセストークンを取得する方法

https://login.microsoftonline.com/common/oauth2/tokenにアクセスし
grant_typeにpasswordか、authorization_codeを指定
HTTPヘッダのContent-Type にapplication/x-www-form-urlencodedを指定

○grant_type=passwordの場合
パラメータ(下記はPOSTメソッドで送信)
grant_type=password
client_id = AzureクライアントID
user = ※ユーザーID
password = パスワード
resource = リソース(SharePoint)のURL
※ユーザIDはOffice365の管理権限を持つアカウントで確認してます。
grant_type=passwordのケースに関してはリクエスト結果からアクセストークンが取得できます。

○grant_type=authorization_codeの場合
URLパラメータ(下記はPOSTメソッドで送信)
grant_type=authorization_code
code = リフレッシュトークン
client_id = Azure ADのクライアントID
redirect_uri = Azure ADで指定したリダイレクト先
resource = リソース(SharePoint)のURL

こちらのケースの場合はリフレッシュトークンを別な方法で取得しないといけないので、あらかじめ次の処理を行います。

https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=(Azure ADのクライアントID)&redirect_uri=(Azure ADで指定したリダイレクト先)
からサインイン画面を表示し、サインイン後にリダイレクトした先のURL内に含まれるcodeパラメータを保持する
※code情報がリフレッシュトークン

これでアクセストークンの取得は完了です。
アクセストークンの有効期間(1時間程度)が切れたときは、リフレッシュトークンを用いて再度取得しましょう。

VisualStudio2013向けサンプル用プロジェクトを作りましたので、よろしければご確認ください。

野本 育男

Filed Under: AzureOffice365アプリまとめ

About the Author

Leave a Reply




If you want a picture to show with your comment, go get a Gravatar.