からめもぶろぐ。

俺たちは雰囲気で OAuth をやっている

Capreze 1.6.0 を公開しました

Capreze 1.6.0 を公開しました。
Capreze は画面キャプチャ用のウィンドウ リサイズ ツールです。ウィンドウを正確なサイズにリサイズしてくれます。

github.com

設定ファイルまわりの挙動を変更しました。シリアル化に使用するライブラリを Newtonsoft.Json から System.Text.Json に変更しています。*1 あと設定ファイルの保存先が変更になっています。

*1:とはいっても Microsoft.AppCenter が Newtonsoft.Json に依存しているので配布パッケージには含まれるという。悲しみしかない。

PnP PowerShell を任意のアクセス許可で実行する

PnP PowerShell を最初に実行したときに Admin Consent を要求されるのですがアクセス許可の一覧がエグくてびっくりします。

f:id:karamem0:20210702123653p:plain

f:id:karamem0:20210702123807p:plain

さすがにこれは許可しづらいので、もうちょっとアクセス許可を制限した上で PnP PowerShell を使いたいです。方法はいくつかあります。

SharePoint アドインを使用する

アドインの登録方法をはじめ詳しい手順はこちらが詳しいです。

jpspsupport.github.io

クライアント ID とクライアント シークレットを使ってログインできます。

Connect-PnPOnline -Url https://{{tenantname}}.sharepoint.com -ClientId {{clientid}} -ClientId {{clientsecret}}

注意するべき点として、既定では使えないテナントがあるそうです。

2020 年夏頃以降に新規作成したテナントにおいて、アプリ専用トークンが既定で無効化されている場合があります。

Azure AD アプリケーションを使用する

委任されたアクセス許可

委任されたアクセス許可 (ユーザーとしてログイン) の場合、以下の方法が可能です。

Connect-PnPOnline -Url https://{{tenantname}}.sharepoint.com -Tenant {{tenantid}} -ClientId {{clientid}} -DeviceLogin

Tenant パラメーターはマルチテナント アプリケーションの場合は不要です。

注意するべき点として、Azure AD アプリケーションがパブリック クライアント フローを許可している必要があります。許可していない場合、以下のエラーが発生します。

AADSTS7000218: The request body must contain the following parameter: 'client_assertion' or 'client_secret'.

アプリケーションのアクセス許可

アプリケーションのアクセス許可の場合、クライアント シークレットを使うことはできず、証明書によるログインが必須になります。

Connect-PnPOnline -Url https://{{tenantname}}.sharepoint.com -Tenant {{tenantid}} -ClientId {{clientid}} -CertificatePath {{certificatepath}} -CertificatePassword {{certificatepassword}}

アクセス トークン

取得済みのアクセス トークンを使ってログインすることもできます。

Connect-PnPOnline -Url https://{{tenantname}}.sharepoint.com -Tenant {{tenantid}} -AccessToken {{accesstoken}}

まとめ

ドキュメントにすべて書いてあるのですがちょいちょい不親切なんですよね。

github.com

そもそも Scope を指定できるようにしてほしいと思ったら、Register-PnPAzureADApp を使って必要なアクセス許可を持つアプリを簡単に作ってね、ということらしいです。理屈はわかるけどいまいちな気がしますね。

github.com

.NET ラボ 勉強会 2021 年 6 月に登壇しました

2021/06/26 に行われた .NET ラボ勉強会 2021 年 6 月に「Microsoft 365 開発をはじめる人のための React 超入門」という内容で登壇しました。

dotnetlab.connpass.com

圧倒的に時間が足りなくてデモがほとんどできなかったので残念です。
余談ですが Microsoft Teams の本体も Edge Webview2 に移行するのにともなって React になるようですよ。


SPClientCore 3.13.0 を公開しました

完全に告知を忘れていました。
SPClientCore 3.13.0 を公開しました。

SPClientCore は PowerShell Core 向けの SharePoint Online 管理モジュールです。

www.powershellgallery.com

変更点は以下の通りです。

  • テナント全体の設定を取得または設定するコマンドレットを追加しました。
  • 削除された個人用サイトを取得するコマンドレットを追加しました。

提供されているコマンドレットの数は 273 になりました。