kazuakix の日記

Windows Phone とか好きです

多要素認証 (MFA) の Office 365 に PowerShell で接続する方法まとめ

 多要素認証 (MFA) を有効にしている Office 365 に PowerShell で接続するときについつい手順を忘れてしまうので、メモがわりにまとめてみました。

Office 365 に接続

 Microsoft Online Services サインイン アシスタントをインストールして、

Connect-MsolService

とするだけです。
アカウント名・パスワードで接続するよりもお手軽な感じすらありますね。

初回のみモジュールのインストールが必要になります。


Exchange Online に接続

 Exchange 管理センターの ハイブリッド > セットアップ を開いて、 Exchange Online PowerShell Module の 構成 をクリックします。

f:id:kazuakix:20180416214754p:plain

 Microsoft Exchange Online Powershell Module がインストールされるので、

Connect-EXOPSSession

とするだけです。こちらもお手軽ですね。
 

SharePoint Online に接続

 SharePoint Online Management Shell をインストールして、

Connect-SPOService -Url https://XXXXX-admin.sharepoint.com

とします。XXXXX の部分は契約しているテナントの ID になります。
 

Skype for Business に接続

 Skype for Business は、アカウント名・パスワードで接続しないといけないと思っていたのですが、いつの間にか多要素認証でも接続できるようになっていました。
 
 Windows PowerShell Module for Skype for Business Online をインストールして、

$session = New-CsOnlineSession -Username メールアドレス
Import-Pssession $session

とします。

 Import-Pssession しているので、操作を終わったら

Remove-Pssession $session

するのをお忘れなく。

Office 365 の多要素認証環境で Outlook を接続する方法

 Facebook の Office 365 コミュニティで教えてもらったネタなのですが、最近は Office 365 で多要素認証 (MFA) を設定している環境でも、Outlook 用のアプリケーションパスワードなしで接続できるそうです。但し、古いテナントでは設定の変更が必要になります。


Exchange Online の先進認証 (modern authentication) 設定を変更する

 以下のページに手順がまとまっています。


1. PowerShell で Exchange Online に接続 *1

$exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $credential -Authentication "Basic" -AllowRedirection
Import-PSSession $exchangeSession

2. 先進認証設定を確認

 以下のコマンドで設定を確認することができます。

Get-OrganizationConfig | Format-Table -Auto Name,OAuth*

 うちのテナントでは 無効 になっているようです。

PS C:\> Get-OrganizationConfig | Format-Table -Auto Name,OAuth*

Name                   OAuth2ClientProfileEnabled
----                   --------------------------
XXXXXX.onmicrosoft.com                      False

f:id:kazuakix:20180415221312p:plain


この状態で アプリケーションパスワード を消して、Outlook を起動すると、当然のようにパスワードの入力を求められます。

f:id:kazuakix:20180415220249p:plain

3. 先進認証設定を変更

 以下のコマンドで設定を変更します、

Set-OrganizationConfig -OAuth2ClientProfileEnabled $true

 この状態で Outlook を起動すると、無事に接続できる事が確認できます。これで都度、利用者にアプリケーションパスワードを作成してもらわなくてもよくなりますね。
 

Skype for Business も設定しておく

 冒頭のページには、Exchange Online で先進認証の状態を SKype for Business と同期する方法についても紹介されていました。

1. PowerShell で Skype for Business に接続 *2

$credential = Get-Credential
$session = New-CsOnlineSession -Credential $credential
Import-PSSession $session

2.同期設定の確認

Get-CsOAuthConfiguration

ClientAdalAuthOverride の項目が NoOverride になっていますね。

f:id:kazuakix:20180415221837p:plain

3.同期設定の変更

 以下のコマンドで同期設定を許可します。

Set-CsOAuthConfiguration -ClientAdalAuthOverride Allowed 

f:id:kazuakix:20180415222137p:plain
 
 ある程度前から契約していて、 Outlook や Skype for Business でアプリケーションパスワードを使っているテナントの方は試してみてください。

*1:Exchange Online への接続設定はコチラ

*2:Skype for Business への接続設定はこの辺

Office 365 でも拡張アドレスを使いたい

 Exhcange Online に乗り換えた / 乗り換えようという人から「G Suite で使ってる + 記号エイリアスを使いたい」という質問を受ける事があります。
 
 Gmail だと kazuaki@tauchi.net というアドレスに対して、kazuaki+test001@tauchi.net のような拡張アドレスを使うことができます。

 Postfix で

recipient_delimiter = +

などとするのも同じですね。
 
 残念ながら Exchange Online に拡張アドレス機能は無いのですが、この機能が無いばかりに Office 365 を断念せざるを得ないというのも残念な話なので、ちょっと無理やり実現してみました。
 
 おおまかな流れとして、以下を参考に存在しないアドレス宛てのメールを集約するメールボックスを作り、そこから各自にメールを転送してもらいます。

1. すべてのメールを受信するためのメールボックスの作成

 Office 365 管理センターから 共有メールボックス を開いて、新規共有メールボックスを作ります。

f:id:kazuakix:20180409211655p:plain

 ここでは、例に倣って catchall というアカウントを作りました。この共有メールボックスはメールを集約するだけなので、管理者だけがアクセスできれば大丈夫です。
 

2. すべてのユーザーを対象にした配布リストの作成

 この後の手順で使うために、すべてのユーザーを参加させた配布リストを作成します。

f:id:kazuakix:20180409211953p:plain
 こちらも例に倣って alluses としました。
 

3. ドメインの定義の変更

 Exchange 管理センターの メール フロー > 承認済みドメイン で、既定のドメインを「権限あり」から「内部の中継」に変更します。

f:id:kazuakix:20180409212133p:plain
 

4. メール フロー ルールの作成

 メール フロー > ルールで新しいルールを作成します。

f:id:kazuakix:20180409212348p:plain

 入力時は その他のオプション をクリックして、詳細入力できる状態にして、以下の内容を入力します。

このルールを適用する条件 送信者の場所が... 組織外
実行する処理 メッセージをリダイレクトする... catchall
ただし次の場合を除く 受信者が次のメンバーである... allusers

 

5. 共有メールボックスでリダイレクトルールを作成

 共有メールボックスを開いて、メールの設定から メール > 自動処理 > 受信トレイと一括処理ルール に進んで、受信トレイのルールを作ります。

f:id:kazuakix:20180409212531p:plain

次の単語が受信者のアドレスに含まれている場合... kazuaki+
メッセージを次へリダイレクトする ... kazuaki

尚、このルールについては、拡張アドレスを利用したいユーザーごとに設定する必要があります。
  

完成

 この状態で、外部から kazuaki+test001@tauchi.net のような拡張アドレスっぽい宛先に送信すると、ちゃんと意図した宛先に送信されていることが確認できます。

f:id:kazuakix:20180409212805p:plain

 ちょっと無理やりなので、ひとりテナント以外では使いにくいですが、どうしても必要な方は一度試してみてください。また、正式の機能として欲しい人は以下の UserVoive で投票してみてください。

How can we improve the tenant admin features O365?
  • 387 votes
  • 11 comments

Support for Dynamic '+' Email Aliases in Office 365

Hello,

I am familiar with using a plus sign following my email alias to create dynamic unique addresses for a Gmail account. e.g. test.email+signedup@gmail.com will arrive at my Gmail mailbox, where I can then apply rules based on the 'To:' address. See this page for details: https://support.g...