多くの企業がMicrosoft 365(旧Office 365)を利用しています。Microsoft は Office アプリケーションへのアクセスを提供するほか、Azure ベースの Active Directory を提供し、ユーザーは Web ブラウザーを使用して Microsoft Sharepoint や OneDrive などのサービスにログインしてアクセスすることができます。
Microsoftのすべてのサービスで、メールアドレスに基づく同じシングルサインオンが使用されています。4D v19 R6から、4D NetKitは、このコンセプトに参加することができ、ユーザーは、いつもの会社の認証情報を使って、アプリケーションにログインすることができるようになります。
シングルサインオンを可能にするだけでなく、認証されたユーザーの電子メール、部署、電話番号などの情報を取得することが可能になります。管理者が許可すれば、同じ会社の同僚に関する情報を取得することもできます。
どのように動作するか見てみましょう。
まず、ユーザーの情報にアクセスするためには、ユーザーの代わりにアクセス権を取得し、OAuth2プロバイダを作成するために New OAuth2 providerコマンドを使用してOAuth2プロバイダを作成します。
$param:=New object()
$param.name:="Microsoft"
$param.permission:="signedIn"
$param.clientId:="XXX"
$param.redirectURI:="http://127.0.0.1:50993/authorize/"
$param.scope:="https://graph.microsoft.com/.default"
// Create new OAuth2 object
$tokenProvider:=New OAuth2 provider($param)
OAuth2プロバイダの準備ができたら New Office365 providerコマンドを使用して、Microsoft Graph API を介して Microsoft 365 アカウントへのアクセスを管理するオブジェクトをインスタンス化します。
var $Office365 : cs.NetKit.Office365Provider
$Office365:=New Office365 provider($tokenProvider)
ユーザ情報
displayName、givenNameなどのユーザ情報を取得できます。
サインインモードで接続している場合は、現在のユーザ情報を取得することができます。
$currentUser:=$Office365.user.getCurrent()
//$currentUser=
//{displayName:My Name,givenName:Name,mail:myname@mycompany.com,...}
といった具合です。
Azure ADの “work or school “アカウントに所属している場合、所属する組織の特定のユーザーの情報にアクセスすることができます。
$user:=$Office365.user.get("myname@mycompany.com")
または、組織のすべてのユーザーのリストにアクセスします。
$users:=$Office365.user.list()
より詳細な情報はドキュメントをご覧ください。また、あなたの経験を4Dフォーラムで共有することもできます。