PnPPowerShellを使用したSharePointOnlineでのアプリのみの認証

Azure AD Appのみの認証は、M365サービスへの認証と、データの読み取り、データのアップロード、自動化スクリプトを介したバックエンドジョブの実行などの操作に使用されています。Microsoftは、Azure ADに登録されているアプリケーションに証明書ベースの認証を使用して、M365または任意のクラウドサービスに対して認証することをお勧めします。CBAは、ユーザーのIDを検証するための非常に堅牢で安全なメカニズムです。 

この記事では、私が最近遭遇したユースケースについて説明したいと思います。以前は、SharePoint App Only認証を使用しています。これはACS(Azure Controlサービス)の概念であり、サイトコレクションの管理者はサイトコレクションに/_layouts/appregnew.aspxを追加することで、クライアントIDとクライアントシークレットを作成できます。アプリケーションで。ただし、このACSアプリのみのアクセストークン方式を使用する場合の問題はほとんどありません。

  • 認証は安全ではありません。MSFTは、AzureADアプリのみの認証に切り替えることをお勧めします。
  • アプリケーションが複数のサイトコレクションと通信するようにする場合は、複数のクライアントIDとシークレットを作成する必要があり、処理が面倒になります。

ACSトークンベースの認証の詳細については、参照セクションを参照してください。

幸いなことに、Azure ADアプリでは、SharePointのAPIアクセス許可に「Sites.Selected」という新しいアクセス許可が追加されました。これにより、AzureADアプリは単一のクライアントと証明書の詳細を使用して複数のサイトコレクションに対して認証できます。 

証明書を使用したこのAzureADアプリのみの認証に進む前に、Azure ADの証明書ベースの認証(別名CBA)とは何かを理解しようとします。AzureADには2種類のCBAがあります。 

  1. フェデレーションADFSを使用した証明書ベースの認証
  2. AzureAD証明書ベースの認証

フェデレーションADFSを使用した証明書ベースの認証

以前は、CBAを実装するために、ADFSサービスをユーザーとAzureADの間にデプロイする必要がありました。ADFSを使用するCBAは、X.509証明書を使用してAzureADに対して認証します。

  • ここで、ユーザーは自分の資格情報とデバイスにインストールされた証明書を使用してアプリケーションに署名します。
  • ADFSはユーザーの資格情報と証明書を検証し、成功するとアクセストークンをユーザーに渡してアプリケーションにアクセスします。

AzureAD証明書ベースの認証

Azure AD CBAである最新バージョンでは、ADFSの構成と展開は必要ありません。ユーザーはAzureADと直接対話し、アプリケーションに対して認証できます。

ADFSおよびAzureADCBAを使用したCBAの詳細については、参照セクションに記載されている記事を参照してください。

前提条件

  • PnP.Powershellバージョン1.10.0。このバージョンでは、CBAを使用した認証が更新されていることに注意してください。

  • PowerShellバージョン5.1以降
  • PowerShellコマンドの実行に使用されるアカウントには、「グローバル管理者」権限が必要です。

AzureADアプリを作成する

次に、APIアクセス許可「サイト」を使用してAzureADアプリを作成する手順を実行します。タイプ「アプリケーション」の「選択済み」。次に、このAzure ADアプリを使用して、複数のサイトコレクションに対して認証します。記事を正しく実行するには、最新のPnPPowershellバージョンがインストールされている必要があります。

ステップ1

管理者としてPowerShellISEまたはコマンドウィンドウを開きます。

ステップ2

以下のPSコマンドを実行してアプリケーションを登録します。以下のコマンドを実行しているアカウントに「グローバル管理者」権限があることを確認してください。アカウントでMFA(Multi-Factor Authentication Enabled)がある場合は、プロンプトに従います

Register-PnPAzureADApp -ApplicationName SPSitesSelected -Tenant contosodev.onmicrosoft.com -Store CurrentUser -SharePointApplicationPermissions "Sites.Selected" -Interactive

SharePointOnlineサイトに接続するための証明書ベースの認証

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ3

認証が成功すると、必要なアーティファクトをチェックして同意フローを開始するために60秒待つことを示す以下のメッセージが表示されます。

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ4

アプリを登録してから、証明書と指紋を作成するために、もう一度認証するように求められます。プロンプトに従います

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ5

これで、以下のように認証が成功すると同意がポップアップ表示されます。アプリ名(この場合はSPSites Selected)と、承認およびキャンセルするオプションが表示されます。

SharePointOnlineサイトに接続するための証明書ベースの認証

[アプリ情報]をクリックして、アプリの詳細を確認することもできます。

ステップ6

[同意する]をクリックして同意することに同意すると、コマンド出力ウィンドウから次の情報が表示されます。

SharePointOnlineサイトに接続するための証明書ベースの認証

次の値があります、

  • Pfxファイル:証明書に関連付けられた公開鍵と秘密鍵の両方の情報が含まれています。これは組織外で共有しないでください。
  • Cerファイル:公開鍵とデバイス(この場合はサーバー)に関する情報が含まれています。これは通常、パートナーと交換されます。
  • 指紋:アプリケーションへの認証に使用される証明書に関連付けられた安全なキー。
  • Base64Encoded:これはASCII文字列形式の証明書情報です。

クライアントID、指紋、およびPfxファイルとCerファイルの場所のみをメモする必要があります。

上記の手順は、AzureADアプリケーションが「Sites.Selected」である必要なアクセス許可で作成されていることを確認します。これは、特定のサイトに対してのみ認証するようにAzureADアプリを構成できるようになったことを意味します。

AzureADアプリへのアクセスを許可する

ここで、Azure ADアプリへのアクセスを許可するには、次の一連のコマンドを実行します。

ステップ1

グローバル管理者の資格情報を持つPnPPowerShellモジュールを使用して、テナントのSharePoint管理者URLにログインします。

Connect-PnPOnline -Url "https://contoso-admin.sharepoint.com" -Interactive

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ2

認証時に、PnP管理シェルが実行できる権限に関する次の情報を取得します。

ここでは、組織に代わって同意するか、チェックを外したままにすることができます。[組織を代表して同意する]をオンにした場合、他のユーザーは同意を求められません。

ステップ3

次のコマンドを実行して、アプリに権限を付与します。アプリに付与できる権限は、「読み取り」または「書き込み」の2セットのみであることに注意してください。

Grant-PnPAzureADAppSitePermission -AppId 'YOUR APP ID HERE' -DisplayName 'APP DISPLAY NAME HERE' -Site 'https://contosodev.sharepoint.com/sites/CBADemo1' -Permissions Write

SharePointOnlineサイトに接続するための証明書ベースの認証

検証

ステップ1

権限が付与されているサイトに接続して、アプリへのアクセスを検証します。問題なくコンテンツが表示されるはずです。この場合、以前の接続が存在する場合は、以前のPnP接続から切断します。

Disconnect-PnPOnline

ステップ2

以下のコマンドを入力して、他にPnP接続が存在しないことを確認します。

Get-PnPConnection

「現在の接続にはSharePointコンテキストがありません」というエラーが表示されるはずです。

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ3

次に、AzureADアプリのクレデンシャルを使用してSharePointサイトに接続します。

Connect-PnPOnline -Url "https://contosodev.sharepoint.com/sites/CBADemo2" -ClientId "AZURE AD APP ID" -Thumbprint "CERT THUMP PRINT" -Tenant "YOUR TENANT DOMAIN"

アプリID(クライアントID)とフィンガープリントの値は、[AzureADアプリの作成]セクションの手順6で生成されることに注意してください。Azure ADポータルにログインし、[エンタープライズアプリケーション]でアプリを確認することで、AzureADから詳細を取得することもできます。

SharePointOnlineサイトに接続するための証明書ベースの認証

同様に、テナントドメインは、クイック起動から[Azure Active Directory]をクリックして、[プライマリドメイン]の値を探すことで取得できます。

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ4

次に、以下のコマンドを実行して、アプリが接続されているサイトを確認します。

Get-PnPSite

ステップ5

次に、以下のコマンドを実行して、このサイトコレクション内のすべてのリストのリストを取得します。

Get-PnPList

SharePointOnlineサイトに接続するための証明書ベースの認証

AzureADアプリがアクセスする必要のある他のサイトコレクションに対しても同じコマンドを実行できます。

ステップ6

アクセスが許可されていないサイトに接続して、アプリへのアクセスを検証します。403forbiddenエラーが表示されるはずです。

Connect-PnPOnline -Url "https://contosodev.sharepoint.com/sites/M365POC" -ClientId "YOUR CLIENT ID" -Thumbprint "CERT THUMP PRINT" -Tenant "contosodev.onmicrosoft.com"

SharePointOnlineサイトに接続するための証明書ベースの認証

クライアントIDと証明書のサンププリントを使用してサイトに接続しているときにエラーがスローされないことに気付いたかもしれませんが、サイトの詳細またはリストのコンテンツを取得するときにエラーがスローされます。

完全なスクリプト

#Creating Azure AD App with Certificate Thumbprint.
Register-PnPAzureADApp -ApplicationName SPSitesSelected -Tenant contosodev.onmicrosoft.com -Store CurrentUser -SharePointApplicationPermissions "Sites.Selected" -Interactive
#Connecting to SharePoint online Admin center using Global Admin Credentials
Connect-PnPOnline -Url "https://contosodev-admin.sharepoint.com" -Interactive
#Granting Access to Azure AD App for specific sites
Grant-PnPAzureADAppSitePermission -AppId 'bf8f7d56-c37f-44d6-abcb-670832e49b9c' -DisplayName 'SPSitesSelected' -Site 'https://contosodev.sharepoint.com/sites/CBADemo1' -Permissions Write
Grant-PnPAzureADAppSitePermission -AppId 'bf8f7d56-c37f-44d6-abcb-670832e49b9c' -DisplayName 'SPSitesSelected' -Site 'https://contosodev.sharepoint.com/sites/CBADemo2' -Permissions Write
#Disconnecting the previous connections
Disconnect-PnPOnline
#Validating the connection
Get-PnPConnection
#Connecting to SPO site using Azure AD App
Connect-PnPOnline -Url "https://contosodev.sharepoint.com/sites/CBADemo1" -ClientId "bf8f7d56-c37f-44d6-abcb-670832e49b9c" -Thumbprint "6A506565EABCD759C204C8517955301420A0C02D" -Tenant "contosodev.onmicrosoft.com"
#Gettting site details
Get-PnPSite
#Getting the list content
Get-PnPList
#Disconnecting from the Azure AD App connection
Disconnect-PnPOnline
#Connecting to SPO site using Azure Ad App with other site where access is not being granted.
Connect-PnPOnline -Url "https://contosodev.sharepoint.com/sites/M365POC" -ClientId "bf8f7d56-c37f-44d6-abcb-670832e49b9c" -Thumbprint "6A506565EABCD759C204C8517955301420A0C02D" -Tenant "contosodev.onmicrosoft.com"
#Get the site details
Get-PnPSite
#Get list content for site
Get-PnPList

結論

したがって、この記事では、

  • AzureAD証明書ベースの認証とは何ですか
  • さまざまな種類の認証
  • PnPモジュールを使用して、「Sites.Selected」APIアクセス許可を持つAzureADアプリを生成します。
  • Azure ADアプリへのアクセスを許可してから、アクセスを検証します。

参考文献

 このストーリーは、もともとhttps://www.c-sharpcorner.com/article/certificate-based-authentication-to-connect-to-sharepoint-online-sites/で公開されました。

#authentic #sharepoint #azure 

What is GEEK

Buddha Community

PnPPowerShellを使用したSharePointOnlineでのアプリのみの認証

PnPPowerShellを使用したSharePointOnlineでのアプリのみの認証

Azure AD Appのみの認証は、M365サービスへの認証と、データの読み取り、データのアップロード、自動化スクリプトを介したバックエンドジョブの実行などの操作に使用されています。Microsoftは、Azure ADに登録されているアプリケーションに証明書ベースの認証を使用して、M365または任意のクラウドサービスに対して認証することをお勧めします。CBAは、ユーザーのIDを検証するための非常に堅牢で安全なメカニズムです。 

この記事では、私が最近遭遇したユースケースについて説明したいと思います。以前は、SharePoint App Only認証を使用しています。これはACS(Azure Controlサービス)の概念であり、サイトコレクションの管理者はサイトコレクションに/_layouts/appregnew.aspxを追加することで、クライアントIDとクライアントシークレットを作成できます。アプリケーションで。ただし、このACSアプリのみのアクセストークン方式を使用する場合の問題はほとんどありません。

  • 認証は安全ではありません。MSFTは、AzureADアプリのみの認証に切り替えることをお勧めします。
  • アプリケーションが複数のサイトコレクションと通信するようにする場合は、複数のクライアントIDとシークレットを作成する必要があり、処理が面倒になります。

ACSトークンベースの認証の詳細については、参照セクションを参照してください。

幸いなことに、Azure ADアプリでは、SharePointのAPIアクセス許可に「Sites.Selected」という新しいアクセス許可が追加されました。これにより、AzureADアプリは単一のクライアントと証明書の詳細を使用して複数のサイトコレクションに対して認証できます。 

証明書を使用したこのAzureADアプリのみの認証に進む前に、Azure ADの証明書ベースの認証(別名CBA)とは何かを理解しようとします。AzureADには2種類のCBAがあります。 

  1. フェデレーションADFSを使用した証明書ベースの認証
  2. AzureAD証明書ベースの認証

フェデレーションADFSを使用した証明書ベースの認証

以前は、CBAを実装するために、ADFSサービスをユーザーとAzureADの間にデプロイする必要がありました。ADFSを使用するCBAは、X.509証明書を使用してAzureADに対して認証します。

  • ここで、ユーザーは自分の資格情報とデバイスにインストールされた証明書を使用してアプリケーションに署名します。
  • ADFSはユーザーの資格情報と証明書を検証し、成功するとアクセストークンをユーザーに渡してアプリケーションにアクセスします。

AzureAD証明書ベースの認証

Azure AD CBAである最新バージョンでは、ADFSの構成と展開は必要ありません。ユーザーはAzureADと直接対話し、アプリケーションに対して認証できます。

ADFSおよびAzureADCBAを使用したCBAの詳細については、参照セクションに記載されている記事を参照してください。

前提条件

  • PnP.Powershellバージョン1.10.0。このバージョンでは、CBAを使用した認証が更新されていることに注意してください。

  • PowerShellバージョン5.1以降
  • PowerShellコマンドの実行に使用されるアカウントには、「グローバル管理者」権限が必要です。

AzureADアプリを作成する

次に、APIアクセス許可「サイト」を使用してAzureADアプリを作成する手順を実行します。タイプ「アプリケーション」の「選択済み」。次に、このAzure ADアプリを使用して、複数のサイトコレクションに対して認証します。記事を正しく実行するには、最新のPnPPowershellバージョンがインストールされている必要があります。

ステップ1

管理者としてPowerShellISEまたはコマンドウィンドウを開きます。

ステップ2

以下のPSコマンドを実行してアプリケーションを登録します。以下のコマンドを実行しているアカウントに「グローバル管理者」権限があることを確認してください。アカウントでMFA(Multi-Factor Authentication Enabled)がある場合は、プロンプトに従います

Register-PnPAzureADApp -ApplicationName SPSitesSelected -Tenant contosodev.onmicrosoft.com -Store CurrentUser -SharePointApplicationPermissions "Sites.Selected" -Interactive

SharePointOnlineサイトに接続するための証明書ベースの認証

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ3

認証が成功すると、必要なアーティファクトをチェックして同意フローを開始するために60秒待つことを示す以下のメッセージが表示されます。

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ4

アプリを登録してから、証明書と指紋を作成するために、もう一度認証するように求められます。プロンプトに従います

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ5

これで、以下のように認証が成功すると同意がポップアップ表示されます。アプリ名(この場合はSPSites Selected)と、承認およびキャンセルするオプションが表示されます。

SharePointOnlineサイトに接続するための証明書ベースの認証

[アプリ情報]をクリックして、アプリの詳細を確認することもできます。

ステップ6

[同意する]をクリックして同意することに同意すると、コマンド出力ウィンドウから次の情報が表示されます。

SharePointOnlineサイトに接続するための証明書ベースの認証

次の値があります、

  • Pfxファイル:証明書に関連付けられた公開鍵と秘密鍵の両方の情報が含まれています。これは組織外で共有しないでください。
  • Cerファイル:公開鍵とデバイス(この場合はサーバー)に関する情報が含まれています。これは通常、パートナーと交換されます。
  • 指紋:アプリケーションへの認証に使用される証明書に関連付けられた安全なキー。
  • Base64Encoded:これはASCII文字列形式の証明書情報です。

クライアントID、指紋、およびPfxファイルとCerファイルの場所のみをメモする必要があります。

上記の手順は、AzureADアプリケーションが「Sites.Selected」である必要なアクセス許可で作成されていることを確認します。これは、特定のサイトに対してのみ認証するようにAzureADアプリを構成できるようになったことを意味します。

AzureADアプリへのアクセスを許可する

ここで、Azure ADアプリへのアクセスを許可するには、次の一連のコマンドを実行します。

ステップ1

グローバル管理者の資格情報を持つPnPPowerShellモジュールを使用して、テナントのSharePoint管理者URLにログインします。

Connect-PnPOnline -Url "https://contoso-admin.sharepoint.com" -Interactive

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ2

認証時に、PnP管理シェルが実行できる権限に関する次の情報を取得します。

ここでは、組織に代わって同意するか、チェックを外したままにすることができます。[組織を代表して同意する]をオンにした場合、他のユーザーは同意を求められません。

ステップ3

次のコマンドを実行して、アプリに権限を付与します。アプリに付与できる権限は、「読み取り」または「書き込み」の2セットのみであることに注意してください。

Grant-PnPAzureADAppSitePermission -AppId 'YOUR APP ID HERE' -DisplayName 'APP DISPLAY NAME HERE' -Site 'https://contosodev.sharepoint.com/sites/CBADemo1' -Permissions Write

SharePointOnlineサイトに接続するための証明書ベースの認証

検証

ステップ1

権限が付与されているサイトに接続して、アプリへのアクセスを検証します。問題なくコンテンツが表示されるはずです。この場合、以前の接続が存在する場合は、以前のPnP接続から切断します。

Disconnect-PnPOnline

ステップ2

以下のコマンドを入力して、他にPnP接続が存在しないことを確認します。

Get-PnPConnection

「現在の接続にはSharePointコンテキストがありません」というエラーが表示されるはずです。

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ3

次に、AzureADアプリのクレデンシャルを使用してSharePointサイトに接続します。

Connect-PnPOnline -Url "https://contosodev.sharepoint.com/sites/CBADemo2" -ClientId "AZURE AD APP ID" -Thumbprint "CERT THUMP PRINT" -Tenant "YOUR TENANT DOMAIN"

アプリID(クライアントID)とフィンガープリントの値は、[AzureADアプリの作成]セクションの手順6で生成されることに注意してください。Azure ADポータルにログインし、[エンタープライズアプリケーション]でアプリを確認することで、AzureADから詳細を取得することもできます。

SharePointOnlineサイトに接続するための証明書ベースの認証

同様に、テナントドメインは、クイック起動から[Azure Active Directory]をクリックして、[プライマリドメイン]の値を探すことで取得できます。

SharePointOnlineサイトに接続するための証明書ベースの認証

ステップ4

次に、以下のコマンドを実行して、アプリが接続されているサイトを確認します。

Get-PnPSite

ステップ5

次に、以下のコマンドを実行して、このサイトコレクション内のすべてのリストのリストを取得します。

Get-PnPList

SharePointOnlineサイトに接続するための証明書ベースの認証

AzureADアプリがアクセスする必要のある他のサイトコレクションに対しても同じコマンドを実行できます。

ステップ6

アクセスが許可されていないサイトに接続して、アプリへのアクセスを検証します。403forbiddenエラーが表示されるはずです。

Connect-PnPOnline -Url "https://contosodev.sharepoint.com/sites/M365POC" -ClientId "YOUR CLIENT ID" -Thumbprint "CERT THUMP PRINT" -Tenant "contosodev.onmicrosoft.com"

SharePointOnlineサイトに接続するための証明書ベースの認証

クライアントIDと証明書のサンププリントを使用してサイトに接続しているときにエラーがスローされないことに気付いたかもしれませんが、サイトの詳細またはリストのコンテンツを取得するときにエラーがスローされます。

完全なスクリプト

#Creating Azure AD App with Certificate Thumbprint.
Register-PnPAzureADApp -ApplicationName SPSitesSelected -Tenant contosodev.onmicrosoft.com -Store CurrentUser -SharePointApplicationPermissions "Sites.Selected" -Interactive
#Connecting to SharePoint online Admin center using Global Admin Credentials
Connect-PnPOnline -Url "https://contosodev-admin.sharepoint.com" -Interactive
#Granting Access to Azure AD App for specific sites
Grant-PnPAzureADAppSitePermission -AppId 'bf8f7d56-c37f-44d6-abcb-670832e49b9c' -DisplayName 'SPSitesSelected' -Site 'https://contosodev.sharepoint.com/sites/CBADemo1' -Permissions Write
Grant-PnPAzureADAppSitePermission -AppId 'bf8f7d56-c37f-44d6-abcb-670832e49b9c' -DisplayName 'SPSitesSelected' -Site 'https://contosodev.sharepoint.com/sites/CBADemo2' -Permissions Write
#Disconnecting the previous connections
Disconnect-PnPOnline
#Validating the connection
Get-PnPConnection
#Connecting to SPO site using Azure AD App
Connect-PnPOnline -Url "https://contosodev.sharepoint.com/sites/CBADemo1" -ClientId "bf8f7d56-c37f-44d6-abcb-670832e49b9c" -Thumbprint "6A506565EABCD759C204C8517955301420A0C02D" -Tenant "contosodev.onmicrosoft.com"
#Gettting site details
Get-PnPSite
#Getting the list content
Get-PnPList
#Disconnecting from the Azure AD App connection
Disconnect-PnPOnline
#Connecting to SPO site using Azure Ad App with other site where access is not being granted.
Connect-PnPOnline -Url "https://contosodev.sharepoint.com/sites/M365POC" -ClientId "bf8f7d56-c37f-44d6-abcb-670832e49b9c" -Thumbprint "6A506565EABCD759C204C8517955301420A0C02D" -Tenant "contosodev.onmicrosoft.com"
#Get the site details
Get-PnPSite
#Get list content for site
Get-PnPList

結論

したがって、この記事では、

  • AzureAD証明書ベースの認証とは何ですか
  • さまざまな種類の認証
  • PnPモジュールを使用して、「Sites.Selected」APIアクセス許可を持つAzureADアプリを生成します。
  • Azure ADアプリへのアクセスを許可してから、アクセスを検証します。

参考文献

 このストーリーは、もともとhttps://www.c-sharpcorner.com/article/certificate-based-authentication-to-connect-to-sharepoint-online-sites/で公開されました。

#authentic #sharepoint #azure