Skip to content

Commit 819b9c6

Browse files
committed
.NET Upgrade for all component and • Use Managed Service Identity (MSI) to connect to Azure resources.
1 parent 72560e9 commit 819b9c6

File tree

424 files changed

+45312
-44616
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

424 files changed

+45312
-44616
lines changed

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1818
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1919
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21-
SOFTWARE
21+
SOFTWARE

README.md

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Microsoft Assent
22
## Assent <sub>**A***pproval* **S***olution* **S***implified for* **ENT***erprise*<sub>
3-
Microsoft Assent (*a.k.a Approvals*) as a platform provides the “one stop shop” solution for approvers via a model that brings together disparate different approval requests in a consistent and ultra-modern model. Approvals delivers a unified approvals experience for any approval on multiple form factors - Website, Outlook Actionable email, Teams. It consolidates approvals across organization's line of business applications, building on modern technology and powered by Microsoft Azure. It serves as a showcase for solving modern IT scenarios using the latest technologies.
3+
Microsoft Assent (*a.k.a Approvals*) as a platform provides the “one stop shop” solution for approvers via a model that brings together disparate different approval requests in a consistent and ultra-modern model. Approvals delivers a unified approvals experience for any approval on multiple form factors - Website, Outlook Actionable email, Teams. It consolidates approvals across organization's line of business applications, building on modern technology and powered by Microsoft Azure. It serves as a showcase for solving modern IT scenarios using the latest technologies.
44
- Payload API - Accepts payload from tenant system.
55
- Audit Agent Processor - Logs the payload data into Cosmos db.
66
- Primary Processor - Processes the payload pushed by payload API to service bus.
@@ -47,13 +47,13 @@ Step 3: Select 'Build your own template in the editor' and paste the content of
4747

4848
```
4949
Step 4: Save and go the next step. Select the subscription, resource group & location.
50-
Update the settings to update any of the parameter values if required and click on purchase
50+
Update the settings to update any of the parameter values if required and click on purchase
5151
5252
Note : If there is any failure, try re-deploying again before proceeding for any troubleshooting.
5353
```
5454

5555
## Clean-up
56-
It might have happened that some of the resources which got created may be already present in your subscription.
56+
It might have happened that some of the resources which got created may be already present in your subscription.
5757
In that case, you can continue to use the same and delete the newly created resources. (e.g. Storage Account, Application Insights, ServiceBus - In case of ServiceBus make sure to create the Topics in your exisiting ServiceBus namespace before deleting).
5858

5959
The following table will help in deciding which components can be cleaned-up.
@@ -90,7 +90,6 @@ Step 1: Download the configuration file (AppCofiguration.json) from the samples
9090
```
9191
Step 2: Add/update the values for the following keys in the JSON
9292
```
93-
9493
| Key Name | Source | In KeyVault ? |
9594
|--------|------|--------|
9695
| AADTenantId | Azure Active Directory (AAD) Tenant ID | No |
@@ -127,21 +126,21 @@ Step 2: Add/update the values for the following keys in the JSON
127126
| UrlPlaceholderTenants | [Optional] Int32 identifiers for simulating LoB apps in self-server portal | No |
128127

129128
```
130-
Step 3: Go to the App Configuration service on Azure Portal and select the resource
129+
Step 3: Go to the App Configuration service on Azure Portal and select the resource
131130
where the configuration needs to be imported.
132131
```
133132
```
134133
Step 4: Go to 'Operations' -> 'Import/Export'
135134
```
136135
```
137-
Step 5: Select 'Import' in the toggle button and
136+
Step 5: Select 'Import' in the toggle button and
138137
choose 'Configuration file' from the dropdown 'Source service'.
139138
```
140-
```
139+
```
141140
Step 6: In the 'For language' drop down select 'Other'
142141
```
143142
```
144-
Step 7: Choose 'Json' as the value from the 'File type' dropdown and
143+
Step 7: Choose 'Json' as the value from the 'File type' dropdown and
145144
select the 'AppConfiguration.json' updated in the previous step file from the File Explorer.
146145
```
147146
```
@@ -154,19 +153,19 @@ Select the 'Label' under which the configurations needs to be added (e.g., DEV)
154153
* For the Function Apps add/update the below AppSetting keys:
155154
> APPINSIGHTS_INSTRUMENTATIONKEY
156155
> > This is an instrumentation key of Application Insights which was created from ARM Template.
157-
>
158-
> AzureAppConfiguration
159-
> > This would be Key vault Reference to Azure App Configuration's connection string.
156+
>
157+
> AzureAppConfigurationUrl
158+
> > This would be Azure App Configuration's endpoint URL.
160159
>
161160
> AppConfigurationLabel
162161
> > This would be Azure App Configuration's label value corresponding to the environment the App service is running for.
163162
>
164163
> AzureWebJobsStorage
165164
> > This would be Key vault Reference to storage account's connection string.
166-
>
165+
>
167166
> AzureWebJobsDashboard
168167
> > This would be Key vault Reference to storage account's connection string.
169-
>
168+
>
170169
> ComponentName
171170
> > Name of the component which could be name of the component like *ApprovalsPrimaryProcessor or ApprovalsNotificationProcessor*.
172171
>
@@ -181,36 +180,36 @@ Select the 'Label' under which the configurations needs to be added (e.g., DEV)
181180
> APPINSIGHTS_INSTRUMENTATIONKEY
182181
> > This is an instrumentation key of Application Insights which was created from ARM Template.
183182
>
184-
> AzureAppConfiguration
185-
> > This would be Key vault Reference to Azure App Configuration's connection string.
183+
> AzureAppConfigurationUrl
184+
> > This would be Azure App Configuration's endpoint URL.
186185
>
187186
> AppConfigurationLabel
188187
> > This would be Azure App Configuration's label value corresponding to the environment the App service is running for.
189-
>
188+
>
190189
> ComponentName
191190
> > Name of the component which could be name of the component like *ApprovalsCoreServicesAPI or ApprovalsPayloadServiceAPI*.
192191
>
193192
> ValidAppIds
194193
> > This is AzureAD App's ClientIds which are authorized to access this component (; separated).
195-
>
194+
>
196195
```
197196
Note: The connection string should be the KeyVault url
198197
i.e. Enter the value in this format: @Microsoft.KeyVault(SecretUri=<keyvault Secret Identifier url for AzureAppConfigurationConnectionString>)
199198
```
200199
#### Setup Authentication/Access Permission
201200
* For all the System assinged Managed Identity created earlier assign the following roles to the Azure Storage Account
202201
> Storage Blob Data Contributor
203-
202+
204203
* Setup Authentication for APIs and Function Apps
205-
* Update the Reply Urls section of the AzureAD App created earlier with the URLs of the App Services and FunctionApps (HttpTriggered) URLs suffixed with '/auth/login/aad/callback'
204+
* Update the Reply Urls section of the AzureAD App created earlier with the URLs of the App Services and FunctionApps (HttpTriggered) URLs suffixed with '/auth/login/aad/callback'
206205
* In the 'Authentication' section of the AppServices / FunctionApps (HttpTriggered),
207206
* Add or update the Authentication values (ClientId/Secret/Issuer/Audience)
208207
* Select 'Login with Azure Active Directory' for the option 'Action to take when the request is not authenticated'
209208

210209
## Deploy
211210
Deploy the code in these new components using Azure DevOps (Build and Release pipelines)
212211

213-
The deployment might fail sometimes due to locked files. Try restarting the service, before redeploying.
212+
The deployment might fail sometimes due to locked files. Try restarting the service, before redeploying.
214213
If the issue persists, add the following AppSettings in the service configuration
215214
```
216215
"MSDEPLOY_RENAME_LOCKED_FILES": "1"
@@ -240,8 +239,8 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio
240239

241240
## Trademarks
242241

243-
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
244-
trademarks or logos is subject to and must follow
242+
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
243+
trademarks or logos is subject to and must follow
245244
[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
246245
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
247-
Any use of third-party trademarks or logos are subject to those third-party's policies.
246+
Any use of third-party trademarks or logos are subject to those third-party's policies.

scripts/template.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,7 @@
905905
"index.php",
906906
"hostingstart.html"
907907
],
908-
"netFrameworkVersion": "v4.0",
908+
"netFrameworkVersion": "v6.0",
909909
"requestTracingEnabled": false,
910910
"remoteDebuggingEnabled": false,
911911
"httpLoggingEnabled": false,
@@ -1060,7 +1060,7 @@
10601060
"index.php",
10611061
"hostingstart.html"
10621062
],
1063-
"netFrameworkVersion": "v4.0",
1063+
"netFrameworkVersion": "v6.0",
10641064
"requestTracingEnabled": false,
10651065
"remoteDebuggingEnabled": false,
10661066
"httpLoggingEnabled": false,
@@ -1155,7 +1155,7 @@
11551155
"AppConfigurationLabel": "",
11561156
"AppConfigurationPrefix": "",
11571157
"APPINSIGHTS_INSTRUMENTATIONKEY": "",
1158-
"AzureAppConfiguration": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/AzureAppConfigurationConnectionString)')]",
1158+
"AzureAppConfigurationUrl": "[concat('https://',parameters('appConfigurationName'), '.azconfig.io')]",
11591159
"ComponentName": "ApprovalsCoreServicesAPI",
11601160
"ValidAppIds": "",
11611161
"ValidAudienceUrl": "",
@@ -1233,7 +1233,7 @@
12331233
"index.php",
12341234
"hostingstart.html"
12351235
],
1236-
"netFrameworkVersion": "v4.0",
1236+
"netFrameworkVersion": "v6.0",
12371237
"requestTracingEnabled": false,
12381238
"remoteDebuggingEnabled": false,
12391239
"httpLoggingEnabled": false,
@@ -1328,7 +1328,7 @@
13281328
"AppConfigurationLabel": "",
13291329
"AppConfigurationPrefix": "",
13301330
"APPINSIGHTS_INSTRUMENTATIONKEY": "",
1331-
"AzureAppConfiguration": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/AzureAppConfigurationConnectionString)')]",
1331+
"AzureAppConfigurationUrl": "[concat('https://',parameters('appConfigurationName'), '.azconfig.io')]",
13321332
"ComponentName": "ApprovalsPayloadServiceAPI",
13331333
"ValidAppIds": "",
13341334
"ValidAudienceUrl": "",
@@ -1405,7 +1405,7 @@
14051405
"default.aspx",
14061406
"index.php"
14071407
],
1408-
"netFrameworkVersion": "v4.0",
1408+
"netFrameworkVersion": "v6.0",
14091409
"phpVersion": "5.6",
14101410
"requestTracingEnabled": false,
14111411
"remoteDebuggingEnabled": false,
@@ -1461,7 +1461,7 @@
14611461
"AppConfigurationLabel": "",
14621462
"AppConfigurationPrefix": "",
14631463
"APPINSIGHTS_INSTRUMENTATIONKEY": "",
1464-
"AzureAppConfiguration": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/AzureAppConfigurationConnectionString)')]",
1464+
"AzureAppConfigurationUrl": "[concat('https://',parameters('appConfigurationName'), '.azconfig.io')]",
14651465
"AzureWebJobsDashboard": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/StorageConnectionString)')]",
14661466
"AzureWebJobsStorage": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/StorageConnectionString)')]",
14671467
"ComponentName": "ApprovalsNotificationProcessor",
@@ -1539,7 +1539,7 @@
15391539
"default.aspx",
15401540
"index.php"
15411541
],
1542-
"netFrameworkVersion": "v4.0",
1542+
"netFrameworkVersion": "v6.0",
15431543
"phpVersion": "5.6",
15441544
"requestTracingEnabled": false,
15451545
"remoteDebuggingEnabled": false,
@@ -1595,7 +1595,7 @@
15951595
"AppConfigurationLabel": "",
15961596
"AppConfigurationPrefix": "",
15971597
"APPINSIGHTS_INSTRUMENTATIONKEY": "",
1598-
"AzureAppConfiguration": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/AzureAppConfigurationConnectionString)')]",
1598+
"AzureAppConfigurationUrl": "[concat('https://',parameters('appConfigurationName'), '.azconfig.io')]",
15991599
"AzureWebJobsDashboard": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/StorageConnectionString)')]",
16001600
"AzureWebJobsStorage": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/StorageConnectionString)')]",
16011601
"ComponentName": "ApprovalsWatchdogProcessor",
@@ -1675,7 +1675,7 @@
16751675
"default.aspx",
16761676
"index.php"
16771677
],
1678-
"netFrameworkVersion": "v4.0",
1678+
"netFrameworkVersion": "v6.0",
16791679
"phpVersion": "5.6",
16801680
"requestTracingEnabled": false,
16811681
"remoteDebuggingEnabled": false,
@@ -1731,7 +1731,7 @@
17311731
"AppConfigurationLabel": "",
17321732
"AppConfigurationPrefix": "",
17331733
"APPINSIGHTS_INSTRUMENTATIONKEY": "",
1734-
"AzureAppConfiguration": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/AzureAppConfigurationConnectionString)')]",
1734+
"AzureAppConfigurationUrl": "[concat('https://',parameters('appConfigurationName'), '.azconfig.io')]",
17351735
"AzureWebJobsDashboard": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/StorageConnectionString)')]",
17361736
"AzureWebJobsStorage": "[concat('@Microsoft.KeyVault(SecretUri=https://',parameters('keyVaultName'), '.vault.azure.net/secrets/StorageConnectionString)')]",
17371737
"ComponentName": "ApprovalsPrimaryProcessor",

scripts/template_devtools.json

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@
201201
"default.aspx",
202202
"index.php"
203203
],
204-
"netFrameworkVersion": "v4.0",
204+
"netFrameworkVersion": "v6.0",
205205
"phpVersion": "5.6",
206206
"requestTracingEnabled": false,
207207
"remoteDebuggingEnabled": false,
@@ -317,7 +317,7 @@
317317
"index.php",
318318
"hostingstart.html"
319319
],
320-
"netFrameworkVersion": "v4.0",
320+
"netFrameworkVersion": "v6.0",
321321
"requestTracingEnabled": false,
322322
"remoteDebuggingEnabled": false,
323323
"httpLoggingEnabled": false,
@@ -446,7 +446,7 @@
446446
"index.php",
447447
"hostingstart.html"
448448
],
449-
"netFrameworkVersion": "v4.0",
449+
"netFrameworkVersion": "v6.0",
450450
"requestTracingEnabled": false,
451451
"remoteDebuggingEnabled": false,
452452
"httpLoggingEnabled": false,
@@ -596,7 +596,7 @@
596596
"index.php",
597597
"hostingstart.html"
598598
],
599-
"netFrameworkVersion": "v4.0",
599+
"netFrameworkVersion": "v6.0",
600600
"requestTracingEnabled": false,
601601
"remoteDebuggingEnabled": false,
602602
"httpLoggingEnabled": false,
@@ -725,7 +725,7 @@
725725
"index.php",
726726
"hostingstart.html"
727727
],
728-
"netFrameworkVersion": "v4.0",
728+
"netFrameworkVersion": "v6.0",
729729
"requestTracingEnabled": false,
730730
"remoteDebuggingEnabled": false,
731731
"httpLoggingEnabled": false,
@@ -871,7 +871,7 @@
871871
"default.aspx",
872872
"index.php"
873873
],
874-
"netFrameworkVersion": "v4.0",
874+
"netFrameworkVersion": "v6.0",
875875
"phpVersion": "5.6",
876876
"requestTracingEnabled": false,
877877
"remoteDebuggingEnabled": false,
@@ -931,8 +931,10 @@
931931
"AzureWebJobsStorage": "",
932932
"AzureWebJobsDashboard": "",
933933
"FUNCTIONS_EXTENSION_VERSION": "~3",
934-
"StorageAccountName": "",
935-
"WEBSITE_LOAD_CERTIFICATES": "*"
934+
"ValidAppIds": "",
935+
"WEBSITE_LOAD_CERTIFICATES": "*",
936+
"AppConfigurationLabel": "",
937+
"AzureAppConfigurationUrl": ""
936938
}
937939
},
938940
{
@@ -1005,7 +1007,7 @@
10051007
"default.aspx",
10061008
"index.php"
10071009
],
1008-
"netFrameworkVersion": "v4.0",
1010+
"netFrameworkVersion": "v6.0",
10091011
"phpVersion": "5.6",
10101012
"requestTracingEnabled": false,
10111013
"remoteDebuggingEnabled": false,
@@ -1139,7 +1141,7 @@
11391141
"default.aspx",
11401142
"index.php"
11411143
],
1142-
"netFrameworkVersion": "v4.0",
1144+
"netFrameworkVersion": "v6.0",
11431145
"phpVersion": "5.6",
11441146
"requestTracingEnabled": false,
11451147
"remoteDebuggingEnabled": false,

source/dotnet/APIs/Approvals.CoreServices/Approvals.CoreServices.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp3.1</TargetFramework>
4+
<TargetFramework>net6.0</TargetFramework>
55
<RootNamespace>Microsoft.CFS.Approvals.CoreServices</RootNamespace>
66
<AssemblyName>Microsoft.CFS.Approvals.CoreServices</AssemblyName>
77
</PropertyGroup>
@@ -16,7 +16,8 @@
1616
</PropertyGroup>
1717

1818
<ItemGroup>
19-
<PackageReference Include="Azure.Identity" Version="1.5.0" />
19+
<PackageReference Include="Azure.Data.Tables" Version="12.6.1" />
20+
<PackageReference Include="Azure.Identity" Version="1.6.0" />
2021
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.10" />
2122
<PackageReference Include="Microsoft.Azure.AppConfiguration.AspNetCore" Version="4.5.1" />
2223
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="3.1.23" />

0 commit comments

Comments
 (0)