You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
***`JWT_KEY`** — the symmetric key used by the API's local JWT authentication (copy from `appsettings.json` → `JWTSettings.Key`)
85
+
***`ANGULAR_APP_URL`** — the Azure Static Web App URL (e.g. `https://mango-flower-0ced4011e.4.azurestaticapps.net`) — added to API CORS allowed origins
86
+
***`IDENTITY_ADMIN_URL`** — the IdentityServer Admin UI URL (e.g. `https://app-talent-admin-dev.azurewebsites.net`) — used by STS and Admin app configuration
85
87
86
88
**Retrieve the connection strings from the Bicep outputs:**
87
89
@@ -190,23 +192,86 @@ This is the OIDC exchange described in Article 5.5. After this step, all subsequ
**Why `env:` block instead of `${{ secrets.X }}` inline?** Bash strips characters after `$` followed by a digit — a password like `Abc$9xyz` becomes `Abcxyz` when interpolated inline in a shell script. Mapping secrets to environment variables in the `env:` block and referencing them as `$API_CONN` avoids this. Always use `env:` when passing secrets into shell commands.
220
+
206
221
App Service uses double underscores (`__`) to represent the `:` separator in .NET configuration keys. `ConnectionStrings__DefaultConnection` maps to `ConnectionStrings:DefaultConnection` in the .NET configuration system, which in turn maps to `appsettings.json`'s `ConnectionStrings.DefaultConnection`. This is the standard pattern for hierarchical configuration in Azure App Service.
207
222
208
223
`ASPNETCORE_ENVIRONMENT=Production`causes ASP.NET Core to merge `appsettings.Production.json` (if it exists) on top of `appsettings.json`, then apply App Service settings on top of that. App Service settings always win — they cannot be overridden by a file in the deployment package.
209
224
225
+
### Complete App Service Settings Reference
226
+
227
+
All settings injected by the GitHub Actions workflows, cross-referenced against the live Azure environment.
228
+
229
+
**API App (`app-talent-api-dev`):**
230
+
231
+
* **`ConnectionStrings__DefaultConnection`** — Azure SQL connection string for the API database — source: `API_DB_CONNECTION_STRING` GitHub Secret
232
+
* **`Sts__ServerUrl`** — IdentityServer URL used to fetch the OIDC discovery document — source: `IDENTITY_SERVER_URL` Secret
**⚠️ Stale settings to be aware of:** Running `az webapp config appsettings list` against the live apps may show additional settings not managed by the workflow — for example `CorsOrigins` (an older duplicate of `Cors__AllowedOrigins__0`) or `ASPNETCORE_DETAILEDERRORS` set manually during debugging. Settings set outside the workflow are not removed by subsequent workflow runs — only values for keys the workflow explicitly sets are updated. Remove stale settings manually via the Portal or `az webapp config appsettings delete`.
274
+
210
275
**Deploy:**
211
276
212
277
```yaml
@@ -233,16 +298,26 @@ paths:
233
298
234
299
IdentityServer changes trigger this workflow; API changes do not.
235
300
236
-
**App Service settings for IdentityServer:**
301
+
**App Service settings for IdentityServer STS (using `env:` block):**
IdentityServer uses three different connection string keys — `ConfigurationDbConnection` (clients, scopes), `PersistedGrantDbConnection` (tokens, sessions), and `IdentityDbConnection` (user accounts). All three point to the same Azure SQL database (`sqldb-talent-ids-dev`) in this tutorial. In production, separating them is common.
320
+
IdentityServer uses four different connection string keys — `ConfigurationDbConnection` (clients, scopes), `PersistedGrantDbConnection` (tokens, sessions), `IdentityDbConnection` (user accounts), and `DataProtectionDbConnection` (ASP.NET Data Protection keys). All four point to the same Azure SQL database (`sqldb-talent-ids-dev`) in this tutorial. In production, separating them onto dedicated databases is common. The same `$IDS_CONN` value is reused for all four — the `env:` block means the secret is only referenced once.
0 commit comments