OneDriveのWinSCPでMicrosoftアカウントの登録をしていたら、一点注意点があるのを忘れていました。
前回の続きで2段階認証が必要なMicrosoftアカウントでWinSCPでOneDriveの利用をご報告します。
自分向けの備忘録です。
2段階認証が必要なMicrosoftアカウントの場合
outlook.comのMicrosoftアカウントのOneDriveにWinSCPで接続設定をしていると、エラーが。
「Could not authenticate to server: Missing Authentication-Info header
接続に失敗しました。」
と表示。
あれ、他はうまくいくけどなぁ、何か違うかなぁ…、と思っていたら、このアカウントは2段階認証が必要なMicrosoftアカウントでした。
よくよく考えたら「Microsoft Authenticator」アプリでスマートフォンなどで二段階認証をしています。
アプリパスワードの作成
このMicrosoftアカウントの場合にはアプリケーションパスワードの発行が必要になります。さっそくサイトにアクセスして…
https://account.microsoft.com/security?lang=ja-jp
ページ下部にある「 その他のセキュリティ オプション 」というリンクをクリックします。
「追加のセキュリティ オプション」という画面が表示されると、ちょっと下の方に「アプリ パスワード」という箇所があります。
これだ、「新しいアプリ パスワードの作成」というリンクをクリックして、さっそくアプリパスワードを生成します。
新しいアプリ パスワードが生成されて、画面いっぱいに表示されますので、そのアプリパスワードの文字列をWinSCPのパスワード箇所に入力します。
生成されたアプリパスワードを使ってWinSCPでOneDriveに接続すると、うまく接続できました。
2段階認証が必要なMicrosoftアカウントのOneDriveでは「アプリパスワードを生成する」という動作が必要になる、ってことです。そして使うのはサインインのパスワードではなく「生成したアプリパスワードを利用する」ということですね。
Office365のOneDriveはできない?
そういや、本題と関係ない話ですが、Office365のOneDriveが使えないかも確認。
結論から言いますと、同じ原理でできるだろう、と思っていたらこれが一筋縄ではいかぬ模様で、あきらめました。
ホスト名は自ドメイン(テナント名)を含む「XXX-my.sharepoint.com」と指定して、その配下のURLをリモートディレクトリに登録すればいい、と単純に考えたのですが、どうもちょっと違うようで。
例えばURLが
https://XXX-my.sharepoint.com/personal/%USERNAME%_XXX_onmicrosoft_com/_layouts/XX/onedrive.aspx
となっていると、ホスト名が「XXX-my.sharepoint.com」リモートディレクトリの設定値は「/personal/%USERNAME%_XXX_onmicrosoft_com」となりそうな感じですが、これだと「403 FORBIDDEN」エラーとなり「接続に失敗しました」とメッセージが表示されて接続されないです。
Office365のOneDrive for Businessはちょっと違うってことですね。そもそも同じOneDriveという名称でも今回成功したほうとOffice365のOneDriveはクライアントアプリ(同期するやつ)も違いますし、Office365のOneDriveはSharePoint Onlineベースのオンラインストレージですからやり方が違いますよ、ってことは考えられます。
また別の機会にでも試してみよう、と棚上げしておきます。