Laravel Socialite でMicrosoft Graph (Office 365アカウント)認証する

前回の記事 「Laravel 5.8からMicrosoft Graph APIを利用する (公式ドキュメント編)」では、Micsoroft公式のチュートリアル ドキュメントに沿って、LaravelアプリケーションからMicrosoft Graph APIをOAuth認証プロバイダとして利用する手順について確認しました。

このチュートリアルは、OAuthの認証ロジックをleague/oauth2-clientを使って独自に実装していましたが、実際はLaravel公式のOAuth認証パッケージLaravel Socialiteを使いたいところです。

Laravel Socialiteは非常に多くの認証プロバイダーに対応しています。対応プロバイダーは、Socialite Providersで確認できます。
Microsoft Graphについてももちろん対応しています。

この記事では、Laravel Socialiteを利用してAzure ADのアカウントで認証を実装する手順について確認します。
Auth Scaffoldは使わず、つまりデータベース認証は使わずに、OAuth認証後にLaravel標準のAuthユーザとしてログインし、Auth middlewareを使って要認証のルーティングを保護する手順についても説明しています。

この記事に含まないこと

Azure ADに登録されたアカウントによる認証にのみフォーカスして説明しています。
Microsoft Graph APIを利用したデータの取得については説明しません。
よって、アクセストークンの更新についても言及していません。
“Laravel Socialite でMicrosoft Graph (Office 365アカウント)認証する” の続きを読む

Laravel 5.8からMicrosoft Graph APIを利用する (公式ドキュメント編)

LaravelアプリでOffice 365アカウントによるOAuth認証を実装するにあたって、公式ドキュメント PHP アプリで Outlook REST API を使用する方法 – Outlook Developer | Microsoft Docs の手順を確認してみたメモになります。

このブログの以前の記事「Office 365 REST APIを利用したRuby on Railsアプリの作成」でRuby on Rails版の確認をしていますが、そのPHP版になります。

公式ドキュメントでは、チュートリアル形式でAuthorization Code Flowの処理を一つ一つ実装し、詳細に解説していますが、実際には、これらの手順はLaravel Socialiteを利用すると簡単に実装できます。
そこで、この記事では、Azure ADにアプリケーションを登録し、チュートリアル サンプルを手元で動かし、手っ取り早くAzure ADに登録されたアカウントのアクセストークンをLaravelアプリから取得する流れを体感することができるようにまとめてみました。

Azure Active Directory 管理センター

Rails版の記事を書いていたのは2016年でしたが、その後新しいAzure ADの管理ポータル Azure Active Directory 管理センターがリリースされていました。

The new Azure AD Admin Console is GA!

2017年なのですでにだいぶ前ですね。

Azure Active Directory 管理センターには、直接 https://aad.portal.azure.com/ を開くか、Office 365の管理センターでAzure Active Directoryを選択して開くことができます。


“Laravel 5.8からMicrosoft Graph APIを利用する (公式ドキュメント編)” の続きを読む

Azure Face APIで顔を識別する手順をcurlで追う

会社のテックWebマガジン コピペテック で、micro:bitと組み合わせた入室管理アプリケーションの記事を公開予定です。
紹介しているのは、人感センサー(焦電赤外線センサー)でオフィスの入出を検知してmicro:bitからiPhoneにコマンドを送って写真を撮り、IFTTT経由でWebhookを叩いて、Microsoft AzureのFace APIで誰が来たか識別し、Slackにお知らせするというシステムです。

このシステムでは、人の検出と、新しく来た人の登録するところでAzure Face APIを利用していますが、この手順について調べた内容についてせっかくなのでまとめて置きたいと思います。

手元の画像でFace APIについてちょろっと試すには、サイトのトップページでも試すことができます。まずは、ここで遊んで精度を確認してみるのも良いかもしれません。

AzureにFace APIリソースを追加

Face APIを利用するには、Azureポータルで「Face API」リソースを作成して、APIキーを取得します。

Azure ポータルにサインインして、画面の左のメニューから、[すべてのサービス] > [AI + MACHINE LEARNING]から[Cognitive Service]を選択します。

Cognitive Servicesのページに切り替わるので、左上の[追加]ボタンまたは[Congnitive Serviesの作成]ボタンをクリックします。

AI + Machine Learningのページで、Cognitive Servicesの[さらに表示]をクリックします。


“Azure Face APIで顔を識別する手順をcurlで追う” の続きを読む

MS Teams のbot開発の始め方

Get started on the Microsoft Teams platform with Node.jsを参考に、MS Teams用のbot作成に必要な手順のみを確認したメモになります。

概要

MS TeamsのBotは、Botの他にTabなどを含むアプリケーションとして定義し、アプリケーションをMS Teamsにデプロイすることで利用可能になります。
また、MS Teamsのbotは、MS Bot frameworkに登録し、それをアプリケーションのmanifestに指定する必要があります。

Botのホストはどこでも可能で、エンドポイントはBot frameworkのBotの設定で指定します。
Botの認証は、Bot frameworkで発行したパスワードにより行います。

(Bot Frameworkは、Azure Bot Serviceに移行されました。以下の記事のBot Frameworkの記述はAzure Bot Serviceに置き換えて参照ください)

事前準備

Office 365のテナントを用意する

Office 365 Developer Programに登録すると1年間利用可能な開発用のオフィス365テナントを入手できます。

“MS Teams のbot開発の始め方” の続きを読む

Azure Web AppにデプロイしたPHPからHTTPSサイトにアクセスする

cUrlGuzzleで外部のAPIを利用するアプリケーションをAzure WebAppで動かした場合、証明書が見つからずAPIにHTTPSで接続できない問題が発生します。

HTTPSアクセスする際のSSL証明書の場所は、php.iniのcurl.cainfoに設定しますが、Azure Web Appではd:\home\site\ini/settings.iniファイルで設定できます。

公式ドキュメントは、Azure App Service Web Apps での PHP の構成方法
「PHP_INI_SYSTEM 構成設定の変更」を参照ください。

settings.iniの場所をアプリ設定で指定

[アプリケーション設定] > [アプリの設定]に、キー PHP_INI_SCAN_DIR、値 d:\home\site\ini を追加します。

guzzle-on-azure-webapp
“Azure Web AppにデプロイしたPHPからHTTPSサイトにアクセスする” の続きを読む

Azure ADに登録されているAPI用のアクセストークンをJWTで取得するには

Office 365 Rest APIに対してJWT Bearer Tokenフローで利用するアプリケーションを作るにあたって、まずは、ADAL(Active Directory Authentication Library)を利用したチュートリアルAuthenticating to Azure AD in daemon apps with certificatesを試してみました。

このチュートリアルは、Azure ADの認証シナリオのうち、「クライアント資格情報を使用したサービス間の呼び出し」を実装しています。
このシナリオでは、Azure ADは、OAuthの以下の仕様をサポートします。

ADALを利用すると、設定と秘密鍵を指定するだけで、JWT(Json Web Token)を使ってAPIのアクセストークンを取得するリクエストの実装はライブラリにおまかせできますが、ライブラリが内部でやっていることを図にしてみると以下のようになります。
authenticating-to-azure-ad-with-certificates
(クライアント資格情報を使用したサービス間の呼び出しの図と同じです)
“Azure ADに登録されているAPI用のアクセストークンをJWTで取得するには” の続きを読む

Office 365 REST APIを利用したRuby on Railsアプリの作成

Office 365は、Outlook(Exchagne)、OneDriveおよびVideoにREST APIが用意されています。
この記事では、Office 365 REST APIを利用してOutlookのリソースにアクセスする手順について確認した内容をまとめてみました。

API関連の情報ソース

APIを利用を始めるにあたって、以下のようなドキュメントを参考にしました。

REST API全体のリファレンスについては、Office 365 API reference、利用可能なOutlookのリソースについては、Resource reference for the Mail, Calendar, Contacts, and Task REST APIsで確認できます。

日本語版は、Office 365 API リファレンスがあります。

その他の参考情報としては

以下の公式ブログなどが参考になります。

“Office 365 REST APIを利用したRuby on Railsアプリの作成” の続きを読む

Microsoft Bot Framework BotConnector BotをSlackから利用する

なぜかBotが最近盛り上がっていますが、先日MSのBuild2016にてMicrosoft Bot Frameworkが発表されました。

日本語の速報記事は、以下が参考になりました。

開発の概要は、公式ブログが参考になります。

Build2016 : Microsoft Bot Framework を使った Bot アプリ作成 | 青い空の向こうへ

Build2016の点では、BotFrameworkは、BotConnectorBotBduilerの2つが利用可能になっており、BotDirectoryはComming soon..のようです。

BotDirectoryは、Slack App Directoryのようなものですが、BotConnectorは、あくまでSlackやSkypeから見るとバックエンドのBotなので、BotDirectoryがユーザー体験としてどのような構成になるのかが気になるところです。

また、将来的に追加される機能としては、自然言語解析ベースの機械学習機能が利用できるようになるようです。
Build 2016 (Part 8) Microsoft Bot Frameworkの後半で紹介されています。なかなかおもしろいです。
この辺りについては、LUISとの統合がすでに用意されています。
LUISについては、ムービーが用意されているのでMicrosoft LUIS tutorialを参照してください。

以下、BotBduilerで作成したBotConnector用のBotをAzureにデプロイしてSlackから利用するところまでの
現在利用可能な機能を試してみたのでまとめてみます。

.NetのBotは公式ドキュメントのチュートリアルに沿って動作確認ができるので、Node.jsのSDKを利用して、Azure App ServiceにデプロイしてBotConnectorに設定、Slackと連携するところまで実装してみます。
“Microsoft Bot Framework BotConnector BotをSlackから利用する” の続きを読む

Azure WebアプリにNode.js expressアプリをGitからデプロイ

Azureにデプロイするアプリの開発は.Net以外でもVisual StudioのAzure統合ぶりがとても便利そうですが、Node.jsアプリの開発となると、私も含め普通はMacで開発している人がほとんどかと思います。
Build 2016で発表があったBotFrameworkを試していて、BotをAzure WebAppにデプロイするために、Azure向けのNode.jsアプリをMac OS X上で開発・デプロイする手順について調べてみたことをまとめてみます。

割りと驚いたのは、いつのまにかHerokuの様にgitと連携したデプロイができるようになっているんですね。非常にこれは便利です。
今回は、Bitbucketにpushしたらデプロイする手順を試しています。

Azureは、2,3年前にWebSitesを試して以来ですがとても進化してますね。
以前の記事は「Windows Azure WebサイトでFuelPHPアプリを動かす」の時は旧ポータルでした。

Node.jsの開発については、改めてまとめずとも公式ドキュメントにもちゃんと日本語で説明があります。
Azure App Service での Node.js Web アプリの作成

Hello Worldまでは、この説明のみで必要十分なので、npmでパッケージを管理する例としてexpressを利用する例についてもまとめてみました。
“Azure WebアプリにNode.js expressアプリをGitからデプロイ” の続きを読む

Office 365のExchangeをリモートPower Shellで管理する

Office 365のExchange OnlineはExchange Server 2013ベースのため、Exchangeの管理はWebの管理者センターおよびExchange管理シェルが利用できます

Exchange管理シェルをOffice 365のExchange Onlineに対して実行する手順について、リモート PowerShell による Exchange への接続のドキュメントの内容を確認したのでメモしておきます

動作はWindows 8.1で試しています

Windows PowerShellは管理者としてを実行します

事前準備

Windows PowerShellで署名付きスクリプトを許可するように実行ポリシーを変更する必要があります
以下のコマンドを実行します

PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policie
s のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y

実行ポリシーについての参考記事: WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する
“Office 365のExchangeをリモートPower Shellで管理する” の続きを読む