# Az - Application Proxy

{{#include ../../../banners/hacktricks-training.md}}

## 基本情報

[ドキュメントから:](https://learn.microsoft.com/en-us/entra/identity/app-proxy/application-proxy)

Azure Active DirectoryのApplication Proxyは、**オンプレミスのWebアプリケーションへの安全なリモートアクセス**を提供します。**Azure ADへのシングルサインオン**の後、ユーザーは**クラウド**と**オンプレミスアプリケーション**の両方に、**外部URL**または内部アプリケーションポータルを通じてアクセスできます。

動作は次のようになります：

<figure><img src="../../../images/image (186).png" alt=""><figcaption></figcaption></figure>

1. ユーザーがエンドポイントを通じてアプリケーションにアクセスすると、ユーザーは**Azure ADサインインページ**にリダイレクトされます。
2. **サインインが成功すると**、Azure ADはユーザーのクライアントデバイスに**トークン**を送信します。
3. クライアントはトークンを**Application Proxyサービス**に送信し、トークンからユーザープリンシパル名（UPN）とセキュリティプリンシパル名（SPN）を取得します。**Application Proxyはその後、リクエストをApplication Proxyコネクタに送信します**。
4. シングルサインオンを構成している場合、コネクタはユーザーに代わって必要な**追加認証**を実行します。
5. コネクタはリクエストを**オンプレミスアプリケーション**に送信します。
6. **レスポンス**はコネクタとApplication Proxyサービスを通じて**ユーザーに送信されます**。

## 列挙
```bash
# Enumerate applications with application proxy configured
Get-AzureADApplication | %{try{Get-AzureADApplicationProxyApplication -ObjectId $_.ObjectID;$_.DisplayName;$_.ObjectID}catch{}}

# Get applications service principal
Get-AzureADServicePrincipal -All $true | ?{$_.DisplayName -eq "Name"}

# Use the following ps1 script from https://learn.microsoft.com/en-us/azure/active-directory/app-proxy/scripts/powershell-display-users-group-of-app
# to find users and groups assigned to the application. Pass the ObjectID of the Service Principal to it
Get-ApplicationProxyAssignedUsersAndGroups -ObjectId <object-id>
```
## 参考文献

- [https://learn.microsoft.com/en-us/azure/active-directory/app-proxy/application-proxy](https://learn.microsoft.com/en-us/azure/active-directory/app-proxy/application-proxy)

{{#include ../../../banners/hacktricks-training.md}}
