AADトークンを使用してサービス間認証を有効にしようとしています。私の計画は、トークン内の「グループ」クレームを検証して、呼び出し元が私たちが作成したセキュリティグループのメンバーであることを確認することです。
たとえば、リーダー用にgroup1、ライター用にgroup2を作成します。次に、「グループ」の主張に基づいて、適切なアクセスレベルを特定します。
私はAADアプリを使用して(ユーザーではなく)トークンを発行するため、そのアプリをセキュリティグループのメンバーにする必要があります。 Azure AD Powershellは、グループIDとしてアプリケーションIDを受け付けないようです。これを解決するには?発信者が別のAADアプリである場合、他に推奨されるパターンはありますか?
使用するコマンド: https://docs.Microsoft.com/en-us/powershell/module/azuread/Add-AzureADGroupMember?view=azureadps-2.
Error:
Add-AzureADGroupMember : Error occurred while executing AddGroupMember
Code: Request_BadRequest
Message: An invalid operation was included in the following modified references: 'members'.
RequestId: 0441a156-3a34-484b-83d7-a7863d14654e
DateTimeStamp: Mon, 11 Dec 2017 21:50:41 GMT
HttpStatusCode: BadRequest
HttpStatusDescription: Bad Request
HttpResponseStatus: Completed
At line:1 char:1
+ Add-AzureADGroupMember -ObjectId "9c2cdf89-b8d6-4fb9-9116-7749adec85c ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-AzureADGroupMember], ApiException
+ FullyQualifiedErrorId : Microsoft.Open.AzureAD16.Client.ApiException,Microsoft.Open.AzureAD16.PowerShell.AddGroupMember
Add-AzureADGroupMember
の公式ドキュメントでは、アプリケーションのObjectId
をRefObjectId
として使用できないことが明確にされていませんが、絶対に使用することはできません。 Azure ADグループのメンバーとしてアプリケーションを追加することもできません。たとえば、リーダー用にgroup1、ライター用にgroup2を作成します。次に、「グループ」の主張に基づいて、適切なアクセスレベルを特定します。
現在、AADグループにサービスプリンシパルを追加できます。
例:
$spn = Get-AzureADServicePrincipal -SearchString "yourSpName"
$group = Get-AzureADGroup -SearchString "yourGroupName"
Add-AzureADGroupMember -ObjectId $($group.ObjectId) -RefObjectId $($spn.ObjectId)
最近、多くのユーザーがサービスプリンシパルにロールを割り当てて、サービスプリンシパルに、ロールを使用してアプリにアクセスするためのいくつかの権限を付与したいと考えています。
ここではっきりさせておきたい。役割ベースの許可は、アプリケーションではなくユーザーに使用する必要があります。そして、それはアプリケーションのために設計されていません。いくつかの異なるアクセス許可を与えたい場合は、代わりにアプリケーションのアクセス許可をサービスプリンシパルに割り当てることを検討してください。
アプリ登録のマニフェストを編集することで、Webアプリ/ APIをアプリケーション権限で公開できます。
Azureポータル> Azure Active Directory>アプリの登録>アプリを選択>マニフェストに移動します。
appRoles
には、次のようなコンテンツを挿入できます。
{
"allowedMemberTypes": [
"Application"
],
"displayName": "Access to the settings data",
"id": "c20e145e-5459-4a6c-a074-b942bbd4cfe1",
"isEnabled": true,
"description": "Administrators can access to the settings data in their tenant",
"value": "Settingsdata.ReadWrite.All"
},
次に、権限を付与したい別のアプリ登録に移動します>設定>権限が必要>追加>アクセスしたいアプリケーション名を検索>前に作成したアプリケーション権限を選択します。
したがって、spは、トークンクレームでそのアプリケーションのアクセス許可を持つトークンを取得できます。
また、リソースからの承認のために、Settingsdata.ReadWrite.All
クレームでそのトークンの制御ポリシーを提供するコードロジックを追加する必要があります。