.NET Standard に対応した CSOM で注意するべき点について
少し前の話題になってしまいますが、ついに CSOM が .NET Standard 2.0 に対応したとアナウンスがありました。
.NET Standard 1.0 がリリースされたのが 2016 年、.NET Standard 2.0 がリリースされたのが 2017 年ということなので、対応にかなり時間がかかったことになります。
.NET Standard 版の CSOM は単なる移植ではありません。これまでの .NET Framework 版と比べて大きな変更があります。それはほぼ必ずお世話になっていたであろう SharePointOnlineCredentials
クラスがなくなってしまったという点です。SharePointOnlineCredentials
クラスは WS-Security 認証を使っていました。これが廃止され、OAuth による認証に統一されました。といっても、それをサポートするクラスがあるわけではなく、自前で ExecutingWebRequest
イベントで Authorization
ヘッダーにアクセス トークンを詰め込んでね、ということのようです。
上記の Microsoft のドキュメントでは AuthenticationManager
というクラスが紹介されていますが、Access Token の取得は MSAL を使うのがいいと思います。いずれにせよ Password Credentials は非推奨なので使わないほうがいいでしょう。対話式ならば特に問題ありませんが非対話式だとアプリのトークンを使うかみたいな話になってそれはそれで困りますね。
これまでサクッと書けていたところが途端に難しくなってしまったので、よほど .NET Standard 版を使いたい理由があるのでなければ、当面は .NET Framework 版を使ったほうが簡単です。うっかり .NET Core でプロジェクトを作ってしまって SharePointOnlineCredentials
クラスがなくて頭を抱えることがないことを祈ります。
Discussion