From abfbbc593c92fbc66db52e70b0e386df6234742c Mon Sep 17 00:00:00 2001 From: Priyank Saxena Date: Mon, 8 Nov 2021 08:59:26 +0530 Subject: [PATCH] Company Communicator v4.2 (#532) --- CompanyCommunicator_Context.tm7 | 135 ++ Deployment/AadAppManifest.json | 60 +- Deployment/azuredeploy.json | 1175 +++++++++------ Deployment/azuredeploywithcert.json | 1276 +++++++++++++++++ Deployment/deploy.ps1 | 342 +++-- Deployment/parameters.json | 54 +- Manifest/manifest_authors.json | 2 +- Manifest/manifest_users.json | 2 +- README.md | 10 +- .../Adapter/CCBotFrameworkHttpAdapter.cs | 52 +- .../Adapter/ICCBotFrameworkHttpAdapter.cs | 20 +- .../CompanyCommunicator.Common/Constants.cs | 4 +- .../Extensions/ServiceCollectionExtension.cs | 123 ++ ...ams.Apps.CompanyCommunicator.Common.csproj | 8 +- .../Secrets/Cache.cs | 106 ++ .../Secrets/CachedResponse.cs | 127 ++ .../Secrets/CertificateProvider.cs | 123 ++ .../Secrets/ICertificateProvider.cs | 29 + .../Secrets/KeyVaultProxy.cs | 119 ++ .../Secrets/SecretsRegistry.cs | 42 + .../CommonBot/AuthorAppCredentials.cs | 15 + .../Services/CommonBot/BotOptions.cs | 35 +- .../Services/CommonBot/UserAppCredentials.cs | 14 + .../Services/MessageQueues/BaseQueue.cs | 54 +- .../MessageQueues/DataQueue/DataQueue.cs | 8 +- .../MessageQueues/ExportQueue/ExportQueue.cs | 8 +- .../MessageQueues/MessageQueueOptions.cs | 18 - .../PrepareToSendQueue/PrepareToSendQueue.cs | 8 +- .../MessageQueues/SendQueue/SendQueue.cs | 8 +- .../TeamWork/AppManagerService.cs | 2 +- .../Conversations/ConversationService.cs | 33 +- .../Services/Teams/Messages/MessageService.cs | 8 +- .../Teams/TeamMembers/TeamMembersService.cs | 6 +- .../FileCardServices/FileCardService.cs | 8 +- .../CompanyCommunicator.Data.Func/Startup.cs | 45 +- .../CompanyCommunicator.Prep.Func/Startup.cs | 48 +- .../CompanyCommunicator.Send.Func/Startup.cs | 31 +- ...thenticationServiceCollectionExtensions.cs | 74 +- .../Authentication/GraphTokenProvider.cs | 4 +- .../Authentication/MSGraphScopeHandler.cs | 2 +- .../Bot/CompanyCommunicatorBotAdapter.cs | 35 +- .../ClientApp/package-lock.json | 163 +-- .../ClientApp/package.json | 4 +- .../Controllers/BotController.cs | 3 +- ...soft.Teams.Apps.CompanyCommunicator.csproj | 8 +- Source/CompanyCommunicator/Program.cs | 1 - Source/CompanyCommunicator/Startup.cs | 34 +- Source/CompanyCommunicator/appsettings.json | 20 +- .../HandleExportFailureActivityTest.cs | 1 + .../Export/Activities/UploadActivityTest.cs | 1 + Wiki/Data-stores.md | 16 + Wiki/Deployment-guide-certificate.md | 358 +++++ Wiki/Deployment-guide-powershell.md | 36 +- Wiki/Deployment-guide.md | 60 +- Wiki/Home.md | 3 + Wiki/Release-notes.md | 44 +- Wiki/Scale-app.md | 26 + Wiki/Solution-overview.md | 10 +- Wiki/images/architecture_overview_v4.png | Bin 0 -> 96188 bytes Wiki/images/create-certificate.png | Bin 0 -> 411466 bytes Wiki/images/export-cert.png | Bin 0 -> 18199 bytes Wiki/images/file-explorer.png | Bin 41697 -> 20649 bytes .../import-app-service-cert-finished.png | Bin 0 -> 10180 bytes Wiki/images/import-key-vault-cert.png | Bin 0 -> 61994 bytes Wiki/images/multitenant_app_secret.png | Bin 65840 -> 69419 bytes Wiki/images/upload_certificate.png | Bin 0 -> 107544 bytes Wiki/v5-migration-guide.md | 265 ++++ 67 files changed, 4452 insertions(+), 874 deletions(-) create mode 100644 CompanyCommunicator_Context.tm7 create mode 100644 Deployment/azuredeploywithcert.json create mode 100644 Source/CompanyCommunicator.Common/Extensions/ServiceCollectionExtension.cs create mode 100644 Source/CompanyCommunicator.Common/Secrets/Cache.cs create mode 100644 Source/CompanyCommunicator.Common/Secrets/CachedResponse.cs create mode 100644 Source/CompanyCommunicator.Common/Secrets/CertificateProvider.cs create mode 100644 Source/CompanyCommunicator.Common/Secrets/ICertificateProvider.cs create mode 100644 Source/CompanyCommunicator.Common/Secrets/KeyVaultProxy.cs create mode 100644 Source/CompanyCommunicator.Common/Secrets/SecretsRegistry.cs delete mode 100644 Source/CompanyCommunicator.Common/Services/MessageQueues/MessageQueueOptions.cs create mode 100644 Wiki/Deployment-guide-certificate.md create mode 100644 Wiki/Scale-app.md create mode 100644 Wiki/images/architecture_overview_v4.png create mode 100644 Wiki/images/create-certificate.png create mode 100644 Wiki/images/export-cert.png create mode 100644 Wiki/images/import-app-service-cert-finished.png create mode 100644 Wiki/images/import-key-vault-cert.png create mode 100644 Wiki/images/upload_certificate.png create mode 100644 Wiki/v5-migration-guide.md diff --git a/CompanyCommunicator_Context.tm7 b/CompanyCommunicator_Context.tm7 new file mode 100644 index 000000000..4eba3cfa3 --- /dev/null +++ b/CompanyCommunicator_Context.tm7 @@ -0,0 +1,135 @@ +DRAWINGSURFACE418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2DiagramNameDiagram 1DRAWINGSURFACE92e00741-0e95-4a75-b38d-2153cf978db5GE.EI92e00741-0e95-4a75-b38d-2153cf978db5Human UserNameHuman UserOut Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesTypetypeHuman0Configurable AttributesAs Generic External InteractorAuthenticates ItselfauthenticatesItselfNot ApplicableNoYes0MicrosoftMSNoYes0SE.EI.TMCore.User100461242100837fee15-1f67-4add-b2e8-cb602f6567ddGE.EI837fee15-1f67-4add-b2e8-cb602f6567ddExternal Web ApplicationNameTeams AppOut Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesTypetypeCode0Configurable AttributesAs Generic External InteractorAuthenticates ItselfauthenticatesItselfNot ApplicableNoYes0MicrosoftMSNoYes0SE.EI.TMCore.WebApp10017818010017e8d0b4-e1a3-4d53-a55a-8ebdcff76c2eGE.EI17e8d0b4-e1a3-4d53-a55a-8ebdcff76c2eExternal Web ServiceNameSMBA (Bot Framework)Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesTypetypeCode0Configurable AttributesAs Generic External InteractorAuthenticates ItselfauthenticatesItselfNot ApplicableNoYes0MicrosoftMSNoYes0SE.EI.TMCore.WebSvc100353178100f39b41ff-538a-4f04-b911-ba7a2fe73fa2GE.DSf39b41ff-538a-4f04-b911-ba7a2fe73fa2Non Relational DatabaseNameAzure Table StorageOut Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesStore TypestoreTypeNon Relational Database0Configurable AttributesAs Generic Data StoreStores CredentialsstoresCredentialsNoYes0Stores Log DatastoresLogDataNoYes0EncryptedEncryptedNoYes0SignedSignedNoYes0Write AccessAccessTypeNoYes0Removable StorageRemoveableStorageNoYes0BackupBackupNoYes0SharedsharedNoYes0SE.DS.TMCore.NoSQL1008291207100d8fe453f-286e-4fec-b7c1-33c9a1e56d4cGE.DSd8fe453f-286e-4fec-b7c1-33c9a1e56d4cCloud StorageNameApplication InsightsOut Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Configurable AttributesAs Generic Data StoreStores CredentialsstoresCredentialsNoYes0Stores Log DatastoresLogDataNoYes0EncryptedEncryptedNoYes0SignedSignedNoYes0Write AccessAccessTypeNoYes0Removable StorageRemoveableStorageNoYes0BackupBackupNoYes0SharedsharedNoYes0Store TypestoreTypeSQL Relational DatabaseNon Relational DatabaseFile SystemRegistryConfigurationCacheHTML5 StorageCookieDevice0SE.DS.TMCore.CloudStorage10082919010005fec340-05db-4922-946d-112ff7373c03GE.P05fec340-05db-4922-946d-112ff7373c03Web ApplicationNameCompany CommunicatorOut Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesCode TypecodeTypeUnmanaged0Configurable AttributesAs Generic ProcessRunning AsrunningAsNot SelectedKernelSystemNetwork ServiceLocal ServiceAdministratorStandard User With ElevationStandard User Without ElevationWindows Store App0Isolation LevelIsolationNot SelectedAppContainerLow Integrity LevelMicrosoft Office Isolated Conversion Environment (MOICE)Sandbox0Accepts Input FromacceptsInputFromNot SelectedAny Remote User or EntityKernel, System, or Local AdminLocal or Network ServiceLocal Standard User With ElevationLocal Standard User Without ElevationWindows Store Apps or App Container ProcessesNothingOther0Implements or Uses an Authentication MechanismimplementsAuthenticationSchemeNoYes0Implements or Uses an Authorization MechanismimplementsCustomAuthorizationMechanismNoYes0Implements or Uses a Communication ProtocolimplementsCommunicationProtocolNoYes0Sanitizes InputhasInputSanitizersNot SelectedYesNo0Sanitizes OutputhasOutputSanitizersNot SelectedYesNo0SE.P.TMCore.WebApp100555123310078cb7043-4910-4f9e-8544-e7b2153dff3eGE.P78cb7043-4910-4f9e-8544-e7b2153dff3eManaged ApplicationNameService BusOut Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesCode TypecodeTypeManaged0Configurable AttributesAs Generic ProcessRunning AsrunningAsNot SelectedKernelSystemNetwork ServiceLocal ServiceAdministratorStandard User With ElevationStandard User Without ElevationWindows Store App0Isolation LevelIsolationNot SelectedAppContainerLow Integrity LevelMicrosoft Office Isolated Conversion Environment (MOICE)Sandbox0Accepts Input FromacceptsInputFromNot SelectedAny Remote User or EntityKernel, System, or Local AdminLocal or Network ServiceLocal Standard User With ElevationLocal Standard User Without ElevationWindows Store Apps or App Container ProcessesNothingOther0Implements or Uses an Authentication MechanismimplementsAuthenticationSchemeNoYes0Implements or Uses an Authorization MechanismimplementsCustomAuthorizationMechanismNoYes0Implements or Uses a Communication ProtocolimplementsCommunicationProtocolNoYes0Sanitizes InputhasInputSanitizersNot SelectedYesNo0Sanitizes OutputhasOutputSanitizersNot SelectedYesNo0SE.P.TMCore.NetApp10042012461006480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76GE.P6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76Web ServiceNameAzure FunctionOut Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesCode TypecodeTypeUnmanaged0Configurable AttributesAs Generic ProcessRunning AsrunningAsNot SelectedKernelSystemNetwork ServiceLocal ServiceAdministratorStandard User With ElevationStandard User Without ElevationWindows Store App0Isolation LevelIsolationNot SelectedAppContainerLow Integrity LevelMicrosoft Office Isolated Conversion Environment (MOICE)Sandbox0Accepts Input FromacceptsInputFromNot SelectedAny Remote User or EntityKernel, System, or Local AdminLocal or Network ServiceLocal Standard User With ElevationLocal Standard User Without ElevationWindows Store Apps or App Container ProcessesNothingOther0Implements or Uses an Authentication MechanismimplementsAuthenticationSchemeNoYes0Implements or Uses an Authorization MechanismimplementsCustomAuthorizationMechanismNoYes0Implements or Uses a Communication ProtocolimplementsCommunicationProtocolNoYes0Sanitizes InputhasInputSanitizersNot SelectedYesNo0Sanitizes OutputhasOutputSanitizersNot SelectedYesNo0SE.P.TMCore.WebSvc10024013911002f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18GE.P2f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18Web ServiceNameMicrosoft GraphOut Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesCode TypecodeTypeUnmanaged0Configurable AttributesAs Generic ProcessRunning AsrunningAsNot SelectedKernelSystemNetwork ServiceLocal ServiceAdministratorStandard User With ElevationStandard User Without ElevationWindows Store App0Isolation LevelIsolationNot SelectedAppContainerLow Integrity LevelMicrosoft Office Isolated Conversion Environment (MOICE)Sandbox0Accepts Input FromacceptsInputFromNot SelectedAny Remote User or EntityKernel, System, or Local AdminLocal or Network ServiceLocal Standard User With ElevationLocal Standard User Without ElevationWindows Store Apps or App Container ProcessesNothingOther0Implements or Uses an Authentication MechanismimplementsAuthenticationSchemeNoYes0Implements or Uses an Authorization MechanismimplementsCustomAuthorizationMechanismNoYes0Implements or Uses a Communication ProtocolimplementsCommunicationProtocolNoYes0Sanitizes InputhasInputSanitizersNot SelectedYesNo0Sanitizes OutputhasOutputSanitizersNot SelectedYesNo0SE.P.TMCore.WebSvc100593146210063a3b273-2c3b-40ef-bc41-ae67e941c8bdGE.DS63a3b273-2c3b-40ef-bc41-ae67e941c8bdNon Relational DatabaseNameAzure Key VaultOut Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesStore TypestoreTypeNon Relational Database0Configurable AttributesAs Generic Data StoreStores CredentialsstoresCredentialsNoYes0Stores Log DatastoresLogDataNoYes0EncryptedEncryptedNoYes0SignedSignedNoYes0Write AccessAccessTypeNoYes0Removable StorageRemoveableStorageNoYes0BackupBackupNoYes0SharedsharedNoYes0SE.DS.TMCore.NoSQL100702010100
Diagram 1
b11fc5fb-f7af-441d-9e05-52b3755d9509GE.DFb11fc5fb-f7af-441d-9e05-52b3755d9509HTTPSName1. User interacts with app in TeamsDataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS168210EastWest92e00741-0e95-4a75-b38d-2153cf978db5141292837fee15-1f67-4add-b2e8-cb602f6567dd183130f0d0ff30-4d82-4acc-8794-05aff33a45f1GE.DFf0d0ff30-4d82-4acc-8794-05aff33a45f1HTTPSName2.Teams sends activities +[CC, EUII, EUPI, OII]Dataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103trueReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Covered by threat model of bots in Teams Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS31925EastWest837fee15-1f67-4add-b2e8-cb602f6567dd27313017e8d0b4-e1a3-4d53-a55a-8ebdcff76c2e3581283848cb23-93ed-4266-91f4-4d638eab2a31GE.DF3848cb23-93ed-4266-91f4-4d638eab2a31HTTPSName3.Bot activities +HTTPS; SMBA -> bot token +[CC, EUII, EUPDataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS51115EastNorthWest00000000-0000-0000-0000-00000000000044812805fec340-05db-4922-946d-112ff7373c03573251d692dfd7-b8cf-4757-9753-6ac27d34e69dGE.DFd692dfd7-b8cf-4757-9753-6ac27d34e69dHTTPSName7. Queue the message +HTTPS; Managed Identity[SM]Dataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS467187NorthNorth05fec340-05db-4922-946d-112ff7373c0360523978cb7043-4910-4f9e-8544-e7b2153dff3e4702523b63b270-d39a-4d5f-9df4-33665a91d32bGE.DF3b63b270-d39a-4d5f-9df4-33665a91d32bHTTPSName12.Queue the message HTTPS; +Managed Identity [SM]Dataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS342324NorthWest6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e7629039778cb7043-4910-4f9e-8544-e7b2153dff3e425296273c0d07-97af-4fa8-8a6d-756d72076e19GE.DF273c0d07-97af-4fa8-8a6d-756d72076e19HTTPSName8. App Trigger over HTTPSDataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS464366EastEast78cb7043-4910-4f9e-8544-e7b2153dff3e5152966480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76335441059e20ab-f3df-4db4-94d7-e3c0fd81d905GE.DF059e20ab-f3df-4db4-94d7-e3c0fd81d905HTTPSName6.Read data HTTPS; +delegated tokenDataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS636382SouthNorth05fec340-05db-4922-946d-112ff7373c036053282f23a6eb-aa7a-425c-9d2f-07a6d7ef6a186434685c421ce7-b8d7-42c2-89e0-8eebc61fc6bbGE.DF5c421ce7-b8d7-42c2-89e0-8eebc61fc6bbHTTPSName13. Log telemetry +HTTPS; API key +[EUPI, SM]Dataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS723172SouthEastWest05fec340-05db-4922-946d-112ff7373c03636314d8fe453f-286e-4fec-b7c1-33c9a1e56d4c834140d3145983-ea29-4e12-8ba6-24b6792eb8f6GE.DFd3145983-ea29-4e12-8ba6-24b6792eb8f6HTTPSName5. Read/update data +HTTPS; connection string +[CC, EUII, EUPIDataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS741298EastWest05fec340-05db-4922-946d-112ff7373c03650283f39b41ff-538a-4f04-b911-ba7a2fe73fa2834257c47fbb19-55fe-45a0-883a-1dcb4f3e12b4GE.DFc47fbb19-55fe-45a0-883a-1dcb4f3e12b4HTTPSName10. Read/update data +HTTPS; connection string +[CC, EUII, EUPIDataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS844396NorthEastSouth6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76321409f39b41ff-538a-4f04-b911-ba7a2fe73fa2879302f3f99a81-3930-4708-b3b6-a71786518de5GE.DFf3f99a81-3930-4708-b3b6-a71786518de5HTTPSName11. Post Message to User HTTPSDataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS252260WestSouth6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e7624544117e8d0b4-e1a3-4d53-a55a-8ebdcff76c2e403173433a9d8a-84b0-4846-a972-5394dffe3529GE.DF433a9d8a-84b0-4846-a972-5394dffe3529HTTPSName9.Read data HTTPS; application tokenDataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS443470SouthSouth6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e762904862f23a6eb-aa7a-425c-9d2f-07a6d7ef6a1864355728ded6cf-6aad-4a36-a207-6cae85e1746eGE.DF28ded6cf-6aad-4a36-a207-6cae85e1746eHTTPSName4. Get secrets +HTTPS; Managed identity +[SM]Dataflow Order15ccd509-98eb-49ad-b9c2-b4a2926d17800Out Of Scope71f3d9aa-b8ef-4e54-8126-607a1d903103falseReason For Out Of Scope752473b6-52d4-4776-9a24-202153f7d579Predefined Static AttributesDestination AuthenticatedauthenticatesDestinationYes0Provides ConfidentialityprovidesConfidentialityYes0Provides IntegrityprovidesIntegrityYes0Configurable AttributesAs Generic Data FlowPhysical NetworkchannelNot SelectedWireWi-FiBluetooth2G-4G0Source AuthenticatedauthenticatesSourceNot SelectedNoYes0Transmits XMLXMLencNoYes0Contains CookiesCookiesYesNo0SOAP PayloadSOAPNoYes0REST PayloadRESTNoYes0RSS PayloadRSSNoYes0JSON PayloadJSONNoYes0Forgery Protection54851a3b-65da-4902-b4e0-94ef015be735Not SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change data0SE.DF.TMCore.HTTPS645104NoneSouth00000000-0000-0000-0000-00000000000065026163a3b273-2c3b-40ef-bc41-ae67e941c8bd7521051
DRAWINGSURFACEf7b3d20a-64c9-438b-8f60-a1703c181bbaDiagramNameDiagram 2DRAWINGSURFACE
Diagram 2
1
E56480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e763b63b270-d39a-4d5f-9df4-33665a91d32b78cb7043-4910-4f9e-8544-e7b2153dff3e418b6a60-9f3a-42a7-9a39-8ef51ee8c0d23b63b270-d39a-4d5f-9df4-33665a91d32b206480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76:3b63b270-d39a-4d5f-9df4-33665a91d32b:78cb7043-4910-4f9e-8544-e7b2153dff3e0001-01-01T00:00:00HighTitleElevation Using ImpersonationUserThreatCategoryElevation Of PrivilegeUserThreatShortDescriptionA user subject gains increased capability or privilege by taking advantage of an implementation bug.UserThreatDescriptionService Bus may be able to impersonate the context of Azure Function in order to gain additional privilege.InteractionString12.Queue the message HTTPS; Managed Identity [SM]PriorityHigh6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76AutoGenerated78cb7043-4910-4f9e-8544-e7b2153dff3eE5falsefalseE578cb7043-4910-4f9e-8544-e7b2153dff3e273c0d07-97af-4fa8-8a6d-756d72076e196480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2273c0d07-97af-4fa8-8a6d-756d72076e191978cb7043-4910-4f9e-8544-e7b2153dff3e:273c0d07-97af-4fa8-8a6d-756d72076e19:6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e760001-01-01T00:00:00HighTitleElevation Using ImpersonationUserThreatCategoryElevation Of PrivilegeUserThreatShortDescriptionA user subject gains increased capability or privilege by taking advantage of an implementation bug.UserThreatDescriptionAzure Function may be able to impersonate the context of Service Bus in order to gain additional privilege.InteractionString8. App Trigger over HTTPSPriorityHigh78cb7043-4910-4f9e-8544-e7b2153dff3eAutoGenerated6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76E5falsefalseE56480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76433a9d8a-84b0-4846-a972-5394dffe35292f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2433a9d8a-84b0-4846-a972-5394dffe3529226480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76:433a9d8a-84b0-4846-a972-5394dffe3529:2f23a6eb-aa7a-425c-9d2f-07a6d7ef6a180001-01-01T00:00:00HighTitleElevation Using ImpersonationUserThreatCategoryElevation Of PrivilegeUserThreatShortDescriptionA user subject gains increased capability or privilege by taking advantage of an implementation bug.UserThreatDescriptionMicrosoft Graph may be able to impersonate the context of Azure Function in order to gain additional privilege.InteractionString9.Read data HTTPS; application tokenPriorityHigh6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76AutoGenerated2f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18E5falsefalseT26480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76433a9d8a-84b0-4846-a972-5394dffe35292f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2433a9d8a-84b0-4846-a972-5394dffe3529216480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76:433a9d8a-84b0-4846-a972-5394dffe3529:2f23a6eb-aa7a-425c-9d2f-07a6d7ef6a180001-01-01T00:00:00HighTitleAzure Function Process Memory TamperedUserThreatCategoryTamperingUserThreatShortDescriptionTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.UserThreatDescriptionIf Azure Function is given access to memory, such as shared memory or pointers, or is given the ability to control what Microsoft Graph executes (for example, passing back a function pointer.), then Azure Function can tamper with Microsoft Graph. Consider if the function could work with less access to memory, such as passing data rather than pointers. Copy in data provided, and then validate it.InteractionString9.Read data HTTPS; application tokenPriorityHigh6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76AutoGenerated2f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18T2falsefalseT278cb7043-4910-4f9e-8544-e7b2153dff3e273c0d07-97af-4fa8-8a6d-756d72076e196480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2273c0d07-97af-4fa8-8a6d-756d72076e191878cb7043-4910-4f9e-8544-e7b2153dff3e:273c0d07-97af-4fa8-8a6d-756d72076e19:6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e760001-01-01T00:00:00HighTitleService Bus Process Memory TamperedUserThreatCategoryTamperingUserThreatShortDescriptionTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.UserThreatDescriptionIf Service Bus is given access to memory, such as shared memory or pointers, or is given the ability to control what Azure Function executes (for example, passing back a function pointer.), then Service Bus can tamper with Azure Function. Consider if the function could work with less access to memory, such as passing data rather than pointers. Copy in data provided, and then validate it.InteractionString8. App Trigger over HTTPSPriorityHigh78cb7043-4910-4f9e-8544-e7b2153dff3eAutoGenerated6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76T2falsefalseE505fec340-05db-4922-946d-112ff7373c03d692dfd7-b8cf-4757-9753-6ac27d34e69d78cb7043-4910-4f9e-8544-e7b2153dff3e418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2d692dfd7-b8cf-4757-9753-6ac27d34e69d1705fec340-05db-4922-946d-112ff7373c03:d692dfd7-b8cf-4757-9753-6ac27d34e69d:78cb7043-4910-4f9e-8544-e7b2153dff3e0001-01-01T00:00:00HighTitleElevation Using ImpersonationUserThreatCategoryElevation Of PrivilegeUserThreatShortDescriptionA user subject gains increased capability or privilege by taking advantage of an implementation bug.UserThreatDescriptionService Bus may be able to impersonate the context of Company Communicator in order to gain additional privilege.InteractionString7. Queue the message HTTPS; Managed Identity[SM]PriorityHigh05fec340-05db-4922-946d-112ff7373c03AutoGenerated78cb7043-4910-4f9e-8544-e7b2153dff3eE5falsefalseD205fec340-05db-4922-946d-112ff7373c035c421ce7-b8d7-42c2-89e0-8eebc61fc6bbd8fe453f-286e-4fec-b7c1-33c9a1e56d4c418b6a60-9f3a-42a7-9a39-8ef51ee8c0d25c421ce7-b8d7-42c2-89e0-8eebc61fc6bb1105fec340-05db-4922-946d-112ff7373c03:5c421ce7-b8d7-42c2-89e0-8eebc61fc6bb:d8fe453f-286e-4fec-b7c1-33c9a1e56d4c0001-01-01T00:00:00HighTitlePotential Excessive Resource Consumption for Company Communicator or Application InsightsUserThreatCategoryDenial Of ServiceUserThreatShortDescriptionDenial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.UserThreatDescriptionDoes Company Communicator or Application Insights take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout.InteractionString13. Log telemetry HTTPS; API key [EUPI, SM]PriorityHigh05fec340-05db-4922-946d-112ff7373c03AutoGeneratedd8fe453f-286e-4fec-b7c1-33c9a1e56d4cD2falsefalseS7.105fec340-05db-4922-946d-112ff7373c035c421ce7-b8d7-42c2-89e0-8eebc61fc6bbd8fe453f-286e-4fec-b7c1-33c9a1e56d4c418b6a60-9f3a-42a7-9a39-8ef51ee8c0d25c421ce7-b8d7-42c2-89e0-8eebc61fc6bb1005fec340-05db-4922-946d-112ff7373c03:5c421ce7-b8d7-42c2-89e0-8eebc61fc6bb:d8fe453f-286e-4fec-b7c1-33c9a1e56d4c0001-01-01T00:00:00HighTitleSpoofing of Destination Data Store Application InsightsUserThreatCategorySpoofingUserThreatShortDescriptionSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.UserThreatDescriptionApplication Insights may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Application Insights. Consider using a standard authentication mechanism to identify the destination data store.InteractionString13. Log telemetry HTTPS; API key [EUPI, SM]PriorityHigh05fec340-05db-4922-946d-112ff7373c03AutoGeneratedd8fe453f-286e-4fec-b7c1-33c9a1e56d4cS7.1falsefalseT205fec340-05db-4922-946d-112ff7373c03059e20ab-f3df-4db4-94d7-e3c0fd81d9052f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2059e20ab-f3df-4db4-94d7-e3c0fd81d905805fec340-05db-4922-946d-112ff7373c03:059e20ab-f3df-4db4-94d7-e3c0fd81d905:2f23a6eb-aa7a-425c-9d2f-07a6d7ef6a180001-01-01T00:00:00HighTitleCompany Communicator Process Memory TamperedUserThreatCategoryTamperingUserThreatShortDescriptionTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.UserThreatDescriptionIf Company Communicator is given access to memory, such as shared memory or pointers, or is given the ability to control what Microsoft Graph executes (for example, passing back a function pointer.), then Company Communicator can tamper with Microsoft Graph. Consider if the function could work with less access to memory, such as passing data rather than pointers. Copy in data provided, and then validate it.InteractionString6.Read data HTTPS; delegated tokenPriorityHigh05fec340-05db-4922-946d-112ff7373c03AutoGenerated2f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18T2falsefalseE505fec340-05db-4922-946d-112ff7373c03059e20ab-f3df-4db4-94d7-e3c0fd81d9052f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2059e20ab-f3df-4db4-94d7-e3c0fd81d905905fec340-05db-4922-946d-112ff7373c03:059e20ab-f3df-4db4-94d7-e3c0fd81d905:2f23a6eb-aa7a-425c-9d2f-07a6d7ef6a180001-01-01T00:00:00HighTitleElevation Using ImpersonationUserThreatCategoryElevation Of PrivilegeUserThreatShortDescriptionA user subject gains increased capability or privilege by taking advantage of an implementation bug.UserThreatDescriptionMicrosoft Graph may be able to impersonate the context of Company Communicator in order to gain additional privilege.InteractionString6.Read data HTTPS; delegated tokenPriorityHigh05fec340-05db-4922-946d-112ff7373c03AutoGenerated2f23a6eb-aa7a-425c-9d2f-07a6d7ef6a18E5falsefalseS7.105fec340-05db-4922-946d-112ff7373c03d3145983-ea29-4e12-8ba6-24b6792eb8f6f39b41ff-538a-4f04-b911-ba7a2fe73fa2418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2d3145983-ea29-4e12-8ba6-24b6792eb8f61205fec340-05db-4922-946d-112ff7373c03:d3145983-ea29-4e12-8ba6-24b6792eb8f6:f39b41ff-538a-4f04-b911-ba7a2fe73fa20001-01-01T00:00:00HighTitleSpoofing of Destination Data Store Azure Table StorageUserThreatCategorySpoofingUserThreatShortDescriptionSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.UserThreatDescriptionAzure Table Storage may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Azure Table Storage. Consider using a standard authentication mechanism to identify the destination data store.InteractionString5. Read/update data HTTPS; connection string [CC, EUII, EUPIPriorityHigh05fec340-05db-4922-946d-112ff7373c03AutoGeneratedf39b41ff-538a-4f04-b911-ba7a2fe73fa2S7.1falsefalseD205fec340-05db-4922-946d-112ff7373c03d3145983-ea29-4e12-8ba6-24b6792eb8f6f39b41ff-538a-4f04-b911-ba7a2fe73fa2418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2d3145983-ea29-4e12-8ba6-24b6792eb8f61305fec340-05db-4922-946d-112ff7373c03:d3145983-ea29-4e12-8ba6-24b6792eb8f6:f39b41ff-538a-4f04-b911-ba7a2fe73fa20001-01-01T00:00:00HighTitlePotential Excessive Resource Consumption for Company Communicator or Azure Table StorageUserThreatCategoryDenial Of ServiceUserThreatShortDescriptionDenial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.UserThreatDescriptionDoes Company Communicator or Azure Table Storage take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout.InteractionString5. Read/update data HTTPS; connection string [CC, EUII, EUPIPriorityHigh05fec340-05db-4922-946d-112ff7373c03AutoGeneratedf39b41ff-538a-4f04-b911-ba7a2fe73fa2D2falsefalseS7.16480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76c47fbb19-55fe-45a0-883a-1dcb4f3e12b4f39b41ff-538a-4f04-b911-ba7a2fe73fa2418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2c47fbb19-55fe-45a0-883a-1dcb4f3e12b4146480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76:c47fbb19-55fe-45a0-883a-1dcb4f3e12b4:f39b41ff-538a-4f04-b911-ba7a2fe73fa20001-01-01T00:00:00HighTitleSpoofing of Destination Data Store Azure Table StorageUserThreatCategorySpoofingUserThreatShortDescriptionSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.UserThreatDescriptionAzure Table Storage may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Azure Table Storage. Consider using a standard authentication mechanism to identify the destination data store.InteractionString10. Read/update data HTTPS; connection string [CC, EUII, EUPIPriorityHigh6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76AutoGeneratedf39b41ff-538a-4f04-b911-ba7a2fe73fa2S7.1falsefalseD26480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76c47fbb19-55fe-45a0-883a-1dcb4f3e12b4f39b41ff-538a-4f04-b911-ba7a2fe73fa2418b6a60-9f3a-42a7-9a39-8ef51ee8c0d2c47fbb19-55fe-45a0-883a-1dcb4f3e12b4156480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76:c47fbb19-55fe-45a0-883a-1dcb4f3e12b4:f39b41ff-538a-4f04-b911-ba7a2fe73fa20001-01-01T00:00:00HighTitlePotential Excessive Resource Consumption for Azure Function or Azure Table StorageUserThreatCategoryDenial Of ServiceUserThreatShortDescriptionDenial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.UserThreatDescriptionDoes Azure Function or Azure Table Storage take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout.InteractionString10. Read/update data HTTPS; connection string [CC, EUII, EUPIPriorityHigh6480d8e0-a4f9-4cc4-90ab-d5ab2a4d4e76AutoGeneratedf39b41ff-538a-4f04-b911-ba7a2fe73fa2D2falsefalsetrue4.3falsefalseNot SelectedManagedUnmanagedCode TypeVirtualDynamiccodeTypeListfalseNot SelectedKernelSystemNetwork ServiceLocal ServiceAdministratorStandard User With ElevationStandard User Without ElevationWindows Store AppRunning AsVirtualDynamicrunningAsListfalseNot SelectedAppContainerLow Integrity LevelMicrosoft Office Isolated Conversion Environment (MOICE)SandboxIsolation LevelVirtualDynamicIsolationListfalseNot SelectedAny Remote User or EntityKernel, System, or Local AdminLocal or Network ServiceLocal Standard User With ElevationLocal Standard User Without ElevationWindows Store Apps or App Container ProcessesNothingOtherAccepts Input FromVirtualDynamicacceptsInputFromListfalseNoYesImplements or Uses an Authentication MechanismVirtualDynamicimplementsAuthenticationSchemeListfalseNoYesImplements or Uses an Authorization MechanismVirtualDynamicimplementsCustomAuthorizationMechanismListfalseNoYesImplements or Uses a Communication ProtocolVirtualDynamicimplementsCommunicationProtocolListfalseNot SelectedYesNoSanitizes InputVirtualDynamichasInputSanitizersListfalseNot SelectedYesNoSanitizes OutputVirtualDynamichasOutputSanitizersListA representation of a generic process.falseGE.PCentered on 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Generic ProcessROOTEllipsefalseAnyAnyfalsefalseNot ApplicableNoYesAuthenticates ItselfVirtualDynamicauthenticatesItselfListfalseNot SelectedCodeHumanTypeVirtualDynamictypeListfalseNoYesMicrosoftVirtualDynamicMSList + A representation of an external interactor. + falseGE.EILower right of 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Generic External InteractorROOTRectanglefalseAnyAnyfalsefalseNoYesStores CredentialsVirtualDynamicstoresCredentialsListfalseNoYesStores Log DataVirtualDynamicstoresLogDataListfalseNoYesEncryptedVirtualDynamicEncryptedListfalseNoYesSignedVirtualDynamicSignedListfalseNoYesWrite AccessVirtualDynamicAccessTypeListfalseNoYesRemovable StorageVirtualDynamicRemoveableStorageListfalseNoYesBackupVirtualDynamicBackupListfalseNoYesSharedVirtualDynamicsharedListfalseSQL Relational DatabaseNon Relational DatabaseFile SystemRegistryConfigurationCacheHTML5 StorageCookieDeviceStore TypeVirtualDynamicstoreTypeList + A representation of a data store. + falseGE.DSLower right of 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 Data StoreROOTParallelLinesfalseAnyAnyfalsefalseNot SelectedWireWi-FiBluetooth2G-4GPhysical NetworkVirtualDynamicchannelListfalseNot SelectedNoYesSource AuthenticatedVirtualDynamicauthenticatesSourceListfalseNoYesDestination AuthenticatedVirtualDynamicauthenticatesDestinationListfalseNoYesProvides ConfidentialityVirtualDynamicprovidesConfidentialityListfalseNoYesProvides IntegrityVirtualDynamicprovidesIntegrityListfalseNoYesTransmits XMLVirtualDynamicXMLencListfalseYesNoContains CookiesVirtualDynamicCookiesListfalseNoYesSOAP PayloadVirtualDynamicSOAPListfalseNoYesREST PayloadVirtualDynamicRESTListfalseNoYesRSS PayloadVirtualDynamicRSSListfalseNoYesJSON PayloadVirtualDynamicJSONListfalseNot SelectedValidateAntiForgeryTokenAttributeViewStateUserKeyNonceOther dynamic canaryStatic header not available to the browserOtherNoneNot applicable because the request does not change dataForgery ProtectionVirtualDynamic54851a3b-65da-4902-b4e0-94ef015be735List + A unidirectional representation of the flow of data between elements. + falseGE.DFBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEtJREFUOE9j+P//P1bMaOr9Hx2jqwFhDAEYHngDYBiXRhjGKoiMR5IBIIWkYmwGgGh0jFN8OBkA4qBhbGJYxbEagMNQrOIUGuD9HwBIkRfD8QF9EgAAAABJRU5ErkJggg==Generic Data FlowROOTLinefalseAnyAnyfalse + An arc representation of a trust boundary. + falseGE.TB.LBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABX0lEQVQ4T2NgNPXGh/mhGJscGCNzQArtgVgfxmcy87kAwlA5ZLVwDGOAFQPp/1Dcj8zHZwiY4LUPdgLSMM0YmM8+5JaAY5gRkI3dAJuUUlsgjVUzCM/ZuDPg////vEA2dgNAkqpBKTuBbKwGRNV0iQNpmCZQGMG9AxPk57IJvA6ksRrAYu67EEjLA7E+s7nPReQwAWtGC0CiMMwQkPNZ5H0TtqArIIRBAWueUCgM9gLQEG1QGHDbBr1YuftQDJDvapFYtAhdEwwDY+TO8cvXXUCWw8IAbMjCrXtDgDQHlK8E04CO1YPTVoA0A9nwQIQZAtYMxaBAw2oAFINSLaoBSFgfGEgPgDQ2jWAs5hZVCaSxGwB0Ca+iX9I2IBusGORn3YistTA+q4Xf59KJcy1BarEaAMJAQ8ABixRg6omN/fWgwF26Y38EzLsghfiwNhBbADELlC8KxEpAzAHh/2cAANCSU7ngF2KpAAAAAElFTkSuQmCCGeneric Trust Line BoundaryROOTLineBoundaryfalseAnyAnyfalse + A border representation of a trust boundary. + falseGE.TB.BBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCCGeneric Trust Border BoundaryROOTBorderBoundaryfalseAnyAnyfalse + A representation of an annotation. + falseGE.AFree Text AnnotationROOTAnnotationfalseAnyAnyTwC MSECcc62ebae-3748-431e-b1df-f4220dc9003fSDL TM Knowledge Base (Core)4.1.0.11false + A Windows Process. + falseSE.P.TMCore.OSProcessCentered on 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 ProcessGE.PInheritedfalseAnyAnyfalse + A thread of execution in a Windows process. + falseSE.P.TMCore.ThreadCentered on stenciliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEFJREFUOE9jYDT1ngnE/8nEM0EG/EETJAV/ABmATYJYTD0DQDQ5eNSAUQNAmDoGgDITugSxGGzAfCAGuYIM7D0HAH9a5DRx46KEAAAAAElFTkSuQmCCThreadGE.PInheritedfalseAnyAnyfalsefalseUnmanagedCode TypeVirtualStaticcodeTypeList + A thread of execution in the Windows kernel. + falseSE.P.TMCore.KernelThreadCentered on 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 ThreadGE.PInheritedfalseAnyAnyfalsefalseUnmanagedCode TypeVirtualStaticcodeTypeList + A representation of a Win32 or Win64 application. + falseSE.P.TMCore.WinAppCentered on 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 ApplicationGE.PInheritedfalseAnyAnyfalsefalseManagedCode TypeVirtualStaticcodeTypeList + A representation of a .NET Web application. + falseSE.P.TMCore.NetAppCentered on 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 ApplicationGE.PInheritedfalseAnyAnyfalsefalseUnmanagedCode TypeVirtualStaticcodeTypeList + A representation of a thick client. + falseSE.P.TMCore.ThickClientCentered on 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Thick ClientGE.PInheritedfalseAnyAnyfalsefalseUnmanagedCode TypeVirtualStaticcodeTypeList + A representation of a browser client. + falseSE.P.TMCore.BrowserClientCentered on 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Browser ClientGE.PInheritedfalseAnyAnyfalsefalseNoYesActiveXVirtualDynamicActiveXListfalseNoYesBrowser Plug-in Object (BHO)VirtualDynamicBHOList + A representation of an browser plugin. + falseSE.P.TMCore.PlugInCentered on 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Browser and ActiveX PluginsGE.PInheritedfalseAnyAnyfalsefalseManagedCode TypeVirtualStaticcodeTypeList + A representation of an Web Server Process. + falseSE.P.TMCore.WebServerCentered on stenciliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJ5JREFUOE9j+P//Pxgzmnr/JwejGOCcWTWtZMKcYmIxhgGu2dVhQLYgsRjDAN2ILB8YnxgMNgBEYMH22DSgY5BarAYQ6xKQWjABCjwBx7A7qkEpO8kyAB3T3wDk+Ec2iBiM1QW4DMSW0LC6ADlBIRuALaERDAOLxKJFMBxS3qYHE4dhnAZgE0fC8IQGIlyxYJDzsInDMEgebgAF+D8DAHhvQ2cWCf/0AAAAAElFTkSuQmCCWeb ServerGE.PInheritedfalseAnyAnyfalsefalseLocalWebContextVirtualDynamiccontextListfalseNot SelectedYesNoDocuments Library capabilityVirtualDynamicdocumentsLibraryListfalseNot SelectedYesNoEnterprise Authentication capabilityVirtualDynamicenterprizeAuthenticationListfalseNot SelectedYesNoInternet (Client & Server) capabilityVirtualDynamicinternetClientServerListfalseNot SelectedYesNoInternet (Client) capabilityVirtualDynamicinternetClientListfalseNot SelectedYesNoLocation capabilityVirtualDynamiclocationListfalseNot SelectedYesNoMicrophone capabilityVirtualDynamicmicrophoneListfalseNot SelectedYesNoMusic Library capabilityVirtualDynamicmusicLibraryListfalseNot SelectedYesNoPictures Library capabilityVirtualDynamicpictureLibraryListfalseNot SelectedYesNoPrivate Networks (Client & Server) capabilityVirtualDynamicprivateNetworkClientServerListfalseNot SelectedYesNoProximity capabilityVirtualDynamicproximityListfalseNot SelectedYesNoRemovable Storage capabilityVirtualDynamicremovableStorageListfalseNot SelectedYesNoShared User Certificates capabilityVirtualDynamicsharedUserCertificatesListfalseNot SelectedYesNoText Messaging capabilityVirtualDynamicsmsListfalseNot SelectedYesNoVideos Library capabilityVirtualDynamicvideosLibraryListfalseNot SelectedYesNoWebcam capabilityVirtualDynamicwebcamListfalseManagedCode TypeVirtualStaticcodeTypeList + A representation of a Windows Store process. + falseSE.P.TMCore.ModernCentered on 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Windows Store ProcessGE.PInheritedfalseAnyAnyfalsefalseUnmanagedCode TypeVirtualStaticcodeTypeList + A representation of an network process or service. + falseSE.P.TMCore.Win32ServiceCentered on stenciliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANFJREFUOE+t09EGAkEUxvF6lG6jqxQR3cbQbURERER0FV31ErEsveI+QNT3X3NYszPsji5+Zsycvjk7o8Fw5gr5ZioI+ASLfVQExDa6+l8AY45kgJO7HGQvD78W1kUD+MFYljLxmE9lJ83aVsBRLsLTnuXpMWftKtQkA+yErR+tA+Z01qxBK+AlJ+E0RuuAeelH9pIBls7lMfbuYCNruQkXx6dgLrwKe9QkA8BJI1mJdcCcEOvCRAPA6dw4nwJeYSFhXR3Anync6KoOeAtdZHDlD8vn/L46Hi6/AAAAAElFTkSuQmCCWin32 ServiceGE.PInheritedfalseAnyAnyfalsefalseUnmanagedCode TypeVirtualStaticcodeTypeList + Delivers web content to a human user. + falseSE.P.TMCore.WebAppCentered on stenciliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANFJREFUOE+t09EGAkEUxvF6lG6jqxQR3cbQbURERER0FV31ErEsveI+QNT3X3NYszPsji5+Zsycvjk7o8Fw5gr5ZioI+ASLfVQExDa6+l8AY45kgJO7HGQvD78W1kUD+MFYljLxmE9lJ83aVsBRLsLTnuXpMWftKtQkA+yErR+tA+Z01qxBK+AlJ+E0RuuAeelH9pIBls7lMfbuYCNruQkXx6dgLrwKe9QkA8BJI1mJdcCcEOvCRAPA6dw4nwJeYSFhXR3Anync6KoOeAtdZHDlD8vn/L46Hi6/AAAAAElFTkSuQmCCWeb ApplicationGE.PInheritedfalseAnyAnyfalsefalseUnmanagedCode TypeVirtualStaticcodeTypeList + Exposes a programmatic interface. + falseSE.P.TMCore.WebSvcCentered on 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 ServiceGE.PInheritedfalseAnyAnyfalse + A virtual machine running in a Hyper-V partition. + falseSE.P.TMCore.VMCentered on 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Virtual MachineGE.PInheritedfalseAnyAnyfalse + Microsoft applications running on operating systems from Google or Apple. + falseSE.P.TMCore.NonMSCentered on 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Applications Running on a non Microsoft OSGE.PInheritedfalseAnyAnyfalsefalseCodeTypeVirtualStatictypeList + A representation of an external Web browser. + falseSE.EI.TMCore.BrowserLower right of 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BrowserGE.EIInheritedfalseAnyAnyfalse + A representation of an external authorization provider. + falseSE.EI.TMCore.AuthProviderLower right of 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 ProviderGE.EIInheritedfalseAnyAnyfalsefalseCodeTypeVirtualStatictypeList + A representation of an external Web application (portal, front ed, etc.). + falseSE.EI.TMCore.WebAppLower right of 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 Web ApplicationGE.EIInheritedfalseAnyAnyfalsefalseCodeTypeVirtualStatictypeList + A representation of an external Web service. + falseSE.EI.TMCore.WebSvcLower right of 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 Web ServiceGE.EIInheritedfalseAnyAnyfalsefalseHumanTypeVirtualStatictypeList + A representation of a user. + falseSE.EI.TMCore.UserLower right of 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Human UserGE.EIInheritedfalseAnyAnyfalse + A large service that has only one instance on the Internet, for example, Outlook.com and Xbox Live. + falseSE.EI.TMCore.MegasevriceLower right of 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.EIInheritedfalseAnyAnyfalsefalseNot ApplicableAuthenticates ItselfVirtualStaticauthenticatesItselfListfalseCodeTypeVirtualStatictypeList + Represents the point where an application calls into an unmanaged runtime library such as the CRT. + falseSE.EI.TMCore.CRTLower right of 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Windows RuntimeGE.EIInheritedfalseAnyAnyfalsefalseNot ApplicableAuthenticates ItselfVirtualStaticauthenticatesItselfListfalseCodeTypeVirtualStatictypeList + Represents the point where an application calls into the .NET Framework. + falseSE.EI.TMCore.NFXLower right of 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Windows .NET RuntimeGE.EIInheritedfalseAnyAnyfalsefalseNot ApplicableAuthenticates ItselfVirtualStaticauthenticatesItselfListfalseCodeTypeVirtualStatictypeList + Represents the point where an application calls into WinRT. + falseSE.EI.TMCore.WinRTLower right of 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Windows RT RuntimeGE.EIInheritedfalseAnyAnyfalse + A representation of a Cloud Storage. + falseSE.DS.TMCore.CloudStorageLower right of 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Cloud StorageGE.DSInheritedfalseAnyAnyfalsefalseSQL Relational DatabaseStore TypeVirtualStaticstoreTypeList + A representation of a SQL Database. + falseSE.DS.TMCore.SQLLower right of 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 DatabaseGE.DSInheritedfalseAnyAnyfalsefalseNon Relational DatabaseStore TypeVirtualStaticstoreTypeList + A representation of a non-relational database. + falseSE.DS.TMCore.NoSQLLower right of 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Non Relational DatabaseGE.DSInheritedfalseAnyAnyfalsefalseNTFSExFATFATReFSIFSUDFOtherFile System TypeVirtualDynamicfsTypeListfalseFile SystemStore TypeVirtualStaticstoreTypeList + A representation of a file system. + falseSE.DS.TMCore.FSLower right of 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File SystemGE.DSInheritedfalseAnyAnyfalsefalseRegistryStore TypeVirtualStaticstoreTypeList + A representation of a Registry. + falseSE.DS.TMCore.RegistryLower right of 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Registry HiveGE.DSInheritedfalseAnyAnyfalsefalseConfigurationStore TypeVirtualStaticstoreTypeList + A configuration file, this includes XML, INI, and INF files. + falseSE.DS.TMCore.ConfigFileLower right of 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Configuration FileGE.DSInheritedfalseAnyAnyfalsefalseCacheStore TypeVirtualStaticstoreTypeList + A representation of a local data cache. + falseSE.DS.TMCore.CacheLower right of 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CacheGE.DSInheritedfalseAnyAnyfalsefalseHTML5 StorageStore TypeVirtualStaticstoreTypeList + A representation of HTML5 local storage. + falseSE.DS.TMCore.HTML5LSLower right of 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HTML5 Local StorageGE.DSInheritedfalseAnyAnyfalsefalseNoYesHTTPOnlyVirtualDynamicHTTPOnlyListfalseCookieStore TypeVirtualStaticstoreTypeList + A representation of cookie storage. + falseSE.DS.TMCore.CookieLower right of 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CookiesGE.DSInheritedfalseAnyAnyfalsefalseNoYesGPSVirtualDynamicGPSListfalseNoYesContactsVirtualDynamicContactsListfalseNoYesCalendar EventsVirtualDynamicCalendarListfalseNoYesSMS messagesVirtualDynamicSMSmessagesListfalseNoYesCached CredentialsVirtualDynamicCredsListfalseNoYesEnterprise DataVirtualDynamicEnterpriseListfalseNoYesMessaging Data (Mail, IM, SMS)VirtualDynamice-mailListfalseNoYesSIM StorageVirtualDynamicSIMListfalseNoYesOther DataVirtualDynamicmiscListfalseDeviceStore TypeVirtualStaticstoreTypeList + A representation of device local storage. + falseSE.DS.TMCore.DeviceLower right of stenciliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAKpJREFUOE9j+P//P0UYzmA09bYH4v9E4noMAzisA7ZgUYgVM5v7fEQxACgoj66ICBwPNwBo+2QsCvBidiv/K2ADgBx+kJPQFRCJ7Rk4rQOTsEgQhblsApcysJj7PsImSSwGeQGrBLEYbIBzZtW0kglziknFcANcs6vDQLRuRJYPOg0MaUF0jKwGbABUoStUAToNT2xIGCwHN4ASDDONbIzuNJIxVkHi8X8GAIAQEkmTSFVLAAAAAElFTkSuQmCCDeviceGE.DSInheritedfalseAnyAnyfalsefalseNoSource AuthenticatedVirtualStaticauthenticatesSourceListfalseNoDestination AuthenticatedVirtualStaticauthenticatesDestinationListfalseNoProvides ConfidentialityVirtualStaticprovidesConfidentialityListfalseNoProvides IntegrityVirtualStaticprovidesIntegrityList + A representation of an HTTP data flow. + falseSE.DF.TMCore.HTTPBefore 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.DFInheritedfalseAnyAnyfalsefalseYesDestination AuthenticatedVirtualStaticauthenticatesDestinationListfalseYesProvides ConfidentialityVirtualStaticprovidesConfidentialityListfalseYesProvides IntegrityVirtualStaticprovidesIntegrityList + A representation of an HTTPS data flow. + falseSE.DF.TMCore.HTTPSBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAP9JREFUOE+10s1mQ0EYxvFECCGr3EcI0dBVKeFw6B1kFULpKqvSVSkl5A5yE9lmFbINJWSVVbZZhRBKmf6f8U5NT9pptbL4OWfmvO8zH06pfJG7/zh7wAzX6GCIFT7VpALWqDrnSoHGeLbvXirgMWp8wAKZjSfwdamApyhgbnNvuEQdW82lApZRwBVebX5kc/4oqQDxW7aGNkZo2riPkwDd8tTete1aCCji21h1xYAXNHAP38yzC61WiZqbOOAjYIM9dK67qDDDEarZQf/FErpMv2gI0HZaGBSaw8V9KwRIL2rO8WOzhAAV1635xsYnxV+Jd6CLusWvmyUO+IPcvQN8C4wQAsHzwgAAAABJRU5ErkJggg==HTTPSGE.DFInheritedfalseAnyAnyfalse + A representation of an Binary data flow. + falseSE.DF.TMCore.BinaryBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAGNJREFUOE9jYDT1/k8JhhnwGYjnAPEHKB8fBqkBqQXpgRswGYhB7BYoHx8GqQGpBelBccFMIH4L5ePDIDUgtSguIBtT3wAgYMCH0dVT3wBSMfUNQHcyOkZXPxwNIBVTaID3fwAn5sGwmvgmbgAAAABJRU5ErkJggg==BinaryGE.DFInheritedfalseAnyAnyfalsefalseYesSource AuthenticatedVirtualStaticauthenticatesSourceListfalseYesDestination AuthenticatedVirtualStaticauthenticatesDestinationListfalseYesProvides ConfidentialityVirtualStaticprovidesConfidentialityListfalseYesProvides IntegrityVirtualStaticprovidesIntegrityList + A representation of an IPsec data flow. + falseSE.DF.TMCore.IPsecBefore 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.DFInheritedfalseAnyAnyfalse + A representation of a named pipe data flow. + falseSE.DF.TMCore.NamedPipeBefore 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Named PipeGE.DFInheritedfalseAnyAnyfalse + A representation of a SMBv1 or SMBv2 data flow. + falseSE.DF.TMCore.SMBBefore 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SMBGE.DFInheritedfalseAnyAnyfalse + A representation of an RPC or Distributed COM (DCOM) data flow. + falseSE.DF.TMCore.RPCBefore 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 or DCOMGE.DFInheritedfalseAnyAnyfalse + A representation of an (Advanced) Local Procedure Call data flow. + falseSE.DF.TMCore.ALPCBefore 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ALPCGE.DFInheritedfalseAnyAnyfalse + User Data Protocol Transport. + falseSE.DF.TMCore.UDPBefore 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UDPGE.DFInheritedfalseAnyAnyfalse + An interface for an application to communicate to a device driver. + falseSE.DF.TMCore.IOCTLBefore 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IOCTL InterfaceGE.DFInheritedfalseAnyAnyfalse + An arc representation of an Internet trust boundary. + falseSE.TB.L.TMCore.InternetBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABX0lEQVQ4T2NgNPXGh/mhGJscGCNzQArtgVgfxmcy87kAwlA5ZLVwDGOAFQPp/1Dcj8zHZwiY4LUPdgLSMM0YmM8+5JaAY5gRkI3dAJuUUlsgjVUzCM/ZuDPg////vEA2dgNAkqpBKTuBbKwGRNV0iQNpmCZQGMG9AxPk57IJvA6ksRrAYu67EEjLA7E+s7nPReQwAWtGC0CiMMwQkPNZ5H0TtqArIIRBAWueUCgM9gLQEG1QGHDbBr1YuftQDJDvapFYtAhdEwwDY+TO8cvXXUCWw8IAbMjCrXtDgDQHlK8E04CO1YPTVoA0A9nwQIQZAtYMxaBAw2oAFINSLaoBSFgfGEgPgDQ2jWAs5hZVCaSxGwB0Ca+iX9I2IBusGORn3YistTA+q4Xf59KJcy1BarEaAMJAQ8ABixRg6omN/fWgwF26Y38EzLsghfiwNhBbADELlC8KxEpAzAHh/2cAANCSU7ngF2KpAAAAAElFTkSuQmCCInternet BoundaryGE.TB.LInheritedfalseAnyAnyfalse + An arc representation of a machine trust boundary. + falseSE.TB.L.TMCore.MachineBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABX0lEQVQ4T2NgNPXGh/mhGJscGCNzQArtgVgfxmcy87kAwlA5ZLVwDGOAFQPp/1Dcj8zHZwiY4LUPdgLSMM0YmM8+5JaAY5gRkI3dAJuUUlsgjVUzCM/ZuDPg////vEA2dgNAkqpBKTuBbKwGRNV0iQNpmCZQGMG9AxPk57IJvA6ksRrAYu67EEjLA7E+s7nPReQwAWtGC0CiMMwQkPNZ5H0TtqArIIRBAWueUCgM9gLQEG1QGHDbBr1YuftQDJDvapFYtAhdEwwDY+TO8cvXXUCWw8IAbMjCrXtDgDQHlK8E04CO1YPTVoA0A9nwQIQZAtYMxaBAw2oAFINSLaoBSFgfGEgPgDQ2jWAs5hZVCaSxGwB0Ca+iX9I2IBusGORn3YistTA+q4Xf59KJcy1BarEaAMJAQ8ABixRg6omN/fWgwF26Y38EzLsghfiwNhBbADELlC8KxEpAzAHh/2cAANCSU7ngF2KpAAAAAElFTkSuQmCCMachine Trust BoundaryGE.TB.LInheritedfalseAnyAnyfalse + A border representation of user-model / kernel-mode separation. + falseSE.TB.L.TMCore.KernelBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABX0lEQVQ4T2NgNPXGh/mhGJscGCNzQArtgVgfxmcy87kAwlA5ZLVwDGOAFQPp/1Dcj8zHZwiY4LUPdgLSMM0YmM8+5JaAY5gRkI3dAJuUUlsgjVUzCM/ZuDPg////vEA2dgNAkqpBKTuBbKwGRNV0iQNpmCZQGMG9AxPk57IJvA6ksRrAYu67EEjLA7E+s7nPReQwAWtGC0CiMMwQkPNZ5H0TtqArIIRBAWueUCgM9gLQEG1QGHDbBr1YuftQDJDvapFYtAhdEwwDY+TO8cvXXUCWw8IAbMjCrXtDgDQHlK8E04CO1YPTVoA0A9nwQIQZAtYMxaBAw2oAFINSLaoBSFgfGEgPgDQ2jWAs5hZVCaSxGwB0Ca+iX9I2IBusGORn3YistTA+q4Xf59KJcy1BarEaAMJAQ8ABixRg6omN/fWgwF26Y38EzLsghfiwNhBbADELlC8KxEpAzAHh/2cAANCSU7ngF2KpAAAAAElFTkSuQmCCUser mode or Kernel mode BoundaryGE.TB.LInheritedfalseAnyAnyfalse + A border representation for a Window Store AppContainer boundary. + falseSE.TB.L.TMCore.AppContainerBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABX0lEQVQ4T2NgNPXGh/mhGJscGCNzQArtgVgfxmcy87kAwlA5ZLVwDGOAFQPp/1Dcj8zHZwiY4LUPdgLSMM0YmM8+5JaAY5gRkI3dAJuUUlsgjVUzCM/ZuDPg////vEA2dgNAkqpBKTuBbKwGRNV0iQNpmCZQGMG9AxPk57IJvA6ksRrAYu67EEjLA7E+s7nPReQwAWtGC0CiMMwQkPNZ5H0TtqArIIRBAWueUCgM9gLQEG1QGHDbBr1YuftQDJDvapFYtAhdEwwDY+TO8cvXXUCWw8IAbMjCrXtDgDQHlK8E04CO1YPTVoA0A9nwQIQZAtYMxaBAw2oAFINSLaoBSFgfGEgPgDQ2jWAs5hZVCaSxGwB0Ca+iX9I2IBusGORn3YistTA+q4Xf59KJcy1BarEaAMJAQ8ABixRg6omN/fWgwF26Y38EzLsghfiwNhBbADELlC8KxEpAzAHh/2cAANCSU7ngF2KpAAAAAElFTkSuQmCCAppContainer BoundaryGE.TB.LInheritedfalseAnyAnyfalse + A border representation of a corporate network trust boundary. + falseSE.TB.B.TMCore.CorpNetBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCCCorpNet Trust BoundaryGE.TB.BBorderBoundaryfalseAnyAnyfalse + A border representation of a sandbox trust boundary. + falseSE.TB.B.TMCore.SandboxBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCCSandbox Trust Boundary BorderGE.TB.BBorderBoundaryfalseAnyAnyfalsefalseNoYesLow Integrity Level SandboxVirtualDynamicIntegrityLevelListfalseNoYesApp Container SandboxVirtualDynamicAppContainerListfalseNoYesJavaScript SandboxVirtualDynamicJavaScriptListfalseNoYesFlash SandboxVirtualDynamicFlashList + Describes the types of trust boundaries implemented by Internet Explorer. + falseSE.TB.B.TMCore.IEBBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCCInternet Explorer BoundariesGE.TB.BBorderBoundaryfalseAnyAnyfalsefalseNoYesChrome JavaScript SandboxVirtualDynamicChromeJavaListfalseNoYesChrome SandboxVirtualDynamicChromeListfalseNoYesFirefox JavaScript SandboxVirtualDynamicFirefoxJavaList + Describes the types of trust boundaries implemented by Google Chrome and Firefox. + falseSE.TB.B.TMCore.NonIEBBefore labeliVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCCOther Browsers BoundariesGE.TB.BBorderBoundaryfalseAnyAnyfalseSSpoofingSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.falseTTamperingTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.falseRRepudiationRepudiation threats involve an adversary denying that something happened.falseIInformation DisclosureInformation disclosure happens when the information can be read by an unauthorized party.falseDDenial Of ServiceDenial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.falseEElevation Of PrivilegeA user subject gains increased capability or privilege by taking advantage of an implementation bug.falseAAbuseAbuse is when a legitimate user violates the terms of use for the system without violating a system security policy.truetrueTitlefalseac0f9ea8-3b39-4ce9-bac2-6787124d7b480UserThreatCategoryfalse0UserThreatShortDescriptiontrueSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.Repudiation threats involve an adversary denying that something happened.Information disclosure happens when the information can be read by an unauthorized party.Denial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.A user subject gains increased capability or privilege by taking advantage of an implementation bug.Abuse is when a legitimate user violates the terms of use for the system without violating a system security policy.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalsecf377f97-9dea-42d6-ae63-b097c4a8ec4d0StateInformationfalse0406a684-e06e-4643-ba21-0f63104d91310InteractionStringfalsed64f8926-f09d-4d67-a86f-fb4ad50364510PriorityfalseHighMediumLowbc9c6e2a-15d0-4863-9cac-589e51e4ca1e1falseSThreat was migrated from V3.source is 'ROOT'SUUserThreatShortDescriptiontrueSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseThreat was migrated from V3.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Spoofing (v3)falseS{source.Name} may be spoofed by an attacker and this may lead to unauthorized access to {target.Name}. Consider using a standard authentication mechanism to identify the source process.flow.authenticatesSource is 'Yes' or source.implementsAuthenticationScheme is 'Yes'source is 'GE.P' and (target is 'GE.P' or target is 'GE.DS') and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')S1UserThreatShortDescriptiontrueSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{source.Name} may be spoofed by an attacker and this may lead to unauthorized access to {target.Name}. Consider using a standard authentication mechanism to identify the source process.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Spoofing the {source.Name} ProcessfalseS{target.Name} may be spoofed by an attacker and this may lead to information disclosure by {source.Name}. Consider using a standard authentication mechanism to identify the destination process.flow.authenticatesDestination is 'Yes'(source is 'GE.P' or source is 'GE.EI' or source is 'GE.DS') and target is 'GE.P' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')S2UserThreatShortDescriptiontrueSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{target.Name} may be spoofed by an attacker and this may lead to information disclosure by {source.Name}. Consider using a standard authentication mechanism to identify the destination process.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Spoofing the {target.Name} ProcessfalseS{source.Name} may be spoofed by an attacker and this may lead to unauthorized access to {target.Name}. Consider using a standard authentication mechanism to identify the external entity.source.authenticatesItself is 'Yes' or flow.authenticatesSource is 'Yes'source is 'GE.EI' and target is 'GE.P'S3UserThreatShortDescriptiontrueSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{source.Name} may be spoofed by an attacker and this may lead to unauthorized access to {target.Name}. Consider using a standard authentication mechanism to identify the external entity.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Spoofing the {source.Name} External EntityfalseS{source.Name} may be spoofed by an attacker and this may lead to incorrect data delivered to {target.Name}. Consider using a standard authentication mechanism to identify the source data store.source is 'GE.DS'S7UserThreatShortDescriptiontrueSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{source.Name} may be spoofed by an attacker and this may lead to incorrect data delivered to {target.Name}. Consider using a standard authentication mechanism to identify the source data store.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Spoofing of Source Data Store {source.Name}falseS{target.Name} may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of {target.Name}. Consider using a standard authentication mechanism to identify the destination data store.target is 'GE.DS'S7.1UserThreatShortDescriptiontrueSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{target.Name} may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of {target.Name}. Consider using a standard authentication mechanism to identify the destination data store.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Spoofing of Destination Data Store {target.Name}falseS{target.Name} may be spoofed by an attacker and this may lead to data being sent to the attacker's target instead of {target.Name}. Consider using a standard authentication mechanism to identify the external entity.source is 'GE.P' and target is 'GE.EI' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')S8UserThreatShortDescriptiontrueSpoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{target.Name} may be spoofed by an attacker and this may lead to data being sent to the attacker's target instead of {target.Name}. Consider using a standard authentication mechanism to identify the external entity.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Spoofing of the {target.Name} External Destination EntityfalseTThreat was migrated from V3.source is 'ROOT'TUUserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseThreat was migrated from V3.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Tampering (v3)falseTData flowing across {flow.Name} may be tampered with by an attacker. This may lead to a denial of service attack against {target.Name} or an elevation of privilege attack against {target.Name} or an information disclosure by {target.Name}. Failure to verify that input is as expected is a root cause of a very large number of exploitable issues. Consider all paths and the way they handle data. Verify that all input is verified for correctness using an approved list input validation approach.(flow.providesConfidentiality is 'Yes' and flow.providesIntegrity is 'Yes')(source is 'GE.P' or source is 'GE.EI') and target is 'GE.P' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')T1UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseData flowing across {flow.Name} may be tampered with by an attacker. This may lead to a denial of service attack against {target.Name} or an elevation of privilege attack against {target.Name} or an information disclosure by {target.Name}. Failure to verify that input is as expected is a root cause of a very large number of exploitable issues. Consider all paths and the way they handle data. Verify that all input is verified for correctness using an approved list input validation approach.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Potential Lack of Input Validation for {target.Name}falseTIf {source.Name} is given access to memory, such as shared memory or pointers, or is given the ability to control what {target.Name} executes (for example, passing back a function pointer.), then {source.Name} can tamper with {target.Name}. Consider if the function could work with less access to memory, such as passing data rather than pointers. Copy in data provided, and then validate it.source is 'GE.P' and target is 'GE.P' and target.codeType is 'Unmanaged'T2UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseIf {source.Name} is given access to memory, such as shared memory or pointers, or is given the ability to control what {target.Name} executes (for example, passing back a function pointer.), then {source.Name} can tamper with {target.Name}. Consider if the function could work with less access to memory, such as passing data rather than pointers. Copy in data provided, and then validate it.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1{source.Name} Process Memory TamperedfalseTPackets or messages without sequence numbers or timestamps can be captured and replayed in a wide variety of ways. Implement or utilize an existing communication protocol that supports anti-replay techniques (investigate sequence numbers before timers) and strong integrity.source is 'GE.P' and target is 'GE.P' and source.implementsCommunicationProtocol is 'Yes'T3UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalsePackets or messages without sequence numbers or timestamps can be captured and replayed in a wide variety of ways. Implement or utilize an existing communication protocol that supports anti-replay techniques (investigate sequence numbers before timers) and strong integrity.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Replay AttacksfalseTAttackers who can send a series of packets or messages may be able to overlap data. For example, packet 1 may be 100 bytes starting at offset 0. Packet 2 may be 100 bytes starting at offset 25. Packet 2 will overwrite 75 bytes of packet 1. Ensure you reassemble data before filtering it, and ensure you explicitly handle these sorts of cases.source is 'GE.P' and target is 'GE.P' and source.implementsCommunicationProtocol is 'Yes'T4UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseAttackers who can send a series of packets or messages may be able to overlap data. For example, packet 1 may be 100 bytes starting at offset 0. Packet 2 may be 100 bytes starting at offset 25. Packet 2 will overwrite 75 bytes of packet 1. Ensure you reassemble data before filtering it, and ensure you explicitly handle these sorts of cases.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Collision AttacksfalseTLog readers can come under attack via log files. Consider ways to canonicalize data in all logs. Implement a single reader for the logs, if possible, in order to reduce attack surface area. Be sure to understand and document log file elements which come from untrusted sources.(source is 'GE.P' and target is 'GE.DS' and target.storesLogData is 'Yes') or (target is 'GE.P' and source is 'GE.DS' and source.storesLogData is 'Yes')T5UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseLog readers can come under attack via log files. Consider ways to canonicalize data in all logs. Implement a single reader for the logs, if possible, in order to reduce attack surface area. Be sure to understand and document log file elements which come from untrusted sources.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Risks from LoggingfalseTAn attacker can read or modify data transmitted over an authenticated dataflow.(flow.providesConfidentiality is 'Yes' and flow.providesIntegrity is 'Yes')(flow.authenticatesSource is 'Yes' or flow.authenticatesDestination is 'Yes')T6UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseAn attacker can read or modify data transmitted over an authenticated dataflow.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Authenticated Data Flow CompromisedfalseTSQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. Any procedure that constructs SQL statements should be reviewed for injection vulnerabilities because SQL Server will execute all syntactically valid queries that it receives. Even parameterized data can be manipulated by a skilled and determined attacker. + (target is 'SE.DS.TMCore.SQL' and source is 'GE.P') + T7UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseSQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. Any procedure that constructs SQL statements should be reviewed for injection vulnerabilities because SQL Server will execute all syntactically valid queries that it receives. Even parameterized data can be manipulated by a skilled and determined attacker.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Potential SQL Injection Vulnerability for {target.Name}falseTSQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. Any procedure that constructs SQL statements should be reviewed for injection vulnerabilities because SQL Server will execute all syntactically valid queries that it receives. Even parameterized data can be manipulated by a skilled and determined attacker. + (target is 'SE.DS.TMCore.SQL' and source is 'GE.EI') + T8UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseSQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. Any procedure that constructs SQL statements should be reviewed for injection vulnerabilities because SQL Server will execute all syntactically valid queries that it receives. Even parameterized data can be manipulated by a skilled and determined attacker.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Possible SQL Injection Vulnerability for {target.Name}falseTIf a dataflow contains XML, XML processing threats (DTD and XSLT code execution) may be exploited.(flow.XMLenc is 'Yes' and target is 'GE.P')T11UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseIf a dataflow contains XML, XML processing threats (DTD and XSLT code execution) may be exploited.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1XML DTD and XSLT ProcessingfalseTIf a dataflow contains JSON, JSON processing and hijacking threats may be exploited.((flow is 'SE.DF.TMCore.HTTP' or flow is 'SE.DF.TMCore.HTTPS') and flow.JSON is 'Yes' and target is 'GE.P')T12UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseIf a dataflow contains JSON, JSON processing and hijacking threats may be exploited.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1JavaScript Object Notation ProcessingfalseTThe web server '{target.Name}' could be a subject to a cross-site scripting attack because it does not sanitize untrusted input.(target.hasOutputSanitizers is 'Yes') and (target.hasInputSanitizers is 'Yes')(target is 'SE.P.TMCore.WebServer' or target is 'SE.P.TMCore.WebApp')T13.1UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseThe web server '{target.Name}' could be a subject to a cross-site scripting attack because it does not sanitize untrusted input.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Cross Site ScriptingfalseTThe web server '{target.Name}' could be a subject to a persistent cross-site scripting attack because it does not sanitize data store '{source.Name}' inputs and output.(target.hasOutputSanitizers is 'Yes') and (target.hasInputSanitizers is 'Yes')(target is 'SE.P.TMCore.WebServer' or target is 'SE.P.TMCore.WebApp') and source is 'GE.DS'T13.2UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseThe web server '{target.Name}' could be a subject to a persistent cross-site scripting attack because it does not sanitize data store '{source.Name}' inputs and output.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Persistent Cross Site ScriptingfalseTData flowing across {flow.Name} may be tampered with by an attacker. This may lead to corruption of {target.Name}. Ensure the integrity of the data flow to the data store.(source is 'GE.P' or source is 'GE.EI') and target is 'GE.DS' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')T18UserThreatShortDescriptiontrueTampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseData flowing across {flow.Name} may be tampered with by an attacker. This may lead to corruption of {target.Name}. Ensure the integrity of the data flow to the data store.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1The {target.Name} Data Store Could Be CorruptedfalseRThreat was migrated from V3.source is 'ROOT'RUUserThreatShortDescriptiontrueRepudiation threats involve an adversary denying that something happened.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseThreat was migrated from V3.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Repudiation (v3)falseRIf you have trust levels, is anyone other outside of the highest trust level allowed to log? Letting everyone write to your logs can lead to repudiation problems. Only allow trusted code to log.(source is 'GE.P' or source is 'GE.EI') and (target is 'GE.DS') and (target.storesLogData is 'Yes')R1UserThreatShortDescriptiontrueRepudiation threats involve an adversary denying that something happened.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseIf you have trust levels, is anyone other outside of the highest trust level allowed to log? Letting everyone write to your logs can lead to repudiation problems. Only allow trusted code to log.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Lower Trusted Subject Updates LogsfalseRDo you accept logs from unknown or weakly authenticated users or systems? Identify and authenticate the source of the logs before accepting them.(source is 'GE.P' or source is 'GE.EI') and (target is 'GE.DS') and (target.storesLogData is 'Yes')R2UserThreatShortDescriptiontrueRepudiation threats involve an adversary denying that something happened.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseDo you accept logs from unknown or weakly authenticated users or systems? Identify and authenticate the source of the logs before accepting them.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Data Logs from an Unknown SourcefalseRDoes the log capture enough data to understand what happened in the past? Do your logs capture enough data to understand an incident after the fact? Is such capture lightweight enough to be left on all the time? Do you have enough data to deal with repudiation claims? Make sure you log sufficient and appropriate data to handle a repudiation claims. You might want to talk to an audit expert as well as a privacy expert about your choice of data.source is 'GE.P' and target is 'GE.DS' and target.storesLogData is 'Yes'R3UserThreatShortDescriptiontrueRepudiation threats involve an adversary denying that something happened.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseDoes the log capture enough data to understand what happened in the past? Do your logs capture enough data to understand an incident after the fact? Is such capture lightweight enough to be left on all the time? Do you have enough data to deal with repudiation claims? Make sure you log sufficient and appropriate data to handle a repudiation claims. You might want to talk to an audit expert as well as a privacy expert about your choice of data.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Insufficient AuditingfalseRConsider what happens when the audit mechanism comes under attack, including attempts to destroy the logs, or attack log analysis programs. Ensure access to the log is through a reference monitor, which controls read and write separately. Document what filters, if any, readers can rely on, or writers should expectsource is 'GE.P' and target is 'GE.DS' and target.storesLogData is 'Yes'R4UserThreatShortDescriptiontrueRepudiation threats involve an adversary denying that something happened.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseConsider what happens when the audit mechanism comes under attack, including attempts to destroy the logs, or attack log analysis programs. Ensure access to the log is through a reference monitor, which controls read and write separately. Document what filters, if any, readers can rely on, or writers should expectcf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Potential Weak Protections for Audit DatafalseR{target.Name} claims that it did not receive data from a source outside the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data.target is 'GE.P' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')R6UserThreatShortDescriptiontrueRepudiation threats involve an adversary denying that something happened.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{target.Name} claims that it did not receive data from a source outside the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Potential Data Repudiation by {target.Name}falseR{target.Name} claims that it did not receive data from a process on the other side of the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data.target is 'GE.EI' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')R7UserThreatShortDescriptiontrueRepudiation threats involve an adversary denying that something happened.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{target.Name} claims that it did not receive data from a process on the other side of the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1External Entity {target.Name} Potentially Denies Receiving DatafalseR{target.Name} claims that it did not write data received from an entity on the other side of the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data.target is 'GE.DS' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')R8UserThreatShortDescriptiontrueRepudiation threats involve an adversary denying that something happened.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{target.Name} claims that it did not write data received from an entity on the other side of the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Data Store Denies {target.Name} Potentially Writing DatafalseIThreat was migrated from V3.source is 'ROOT'IUUserThreatShortDescriptiontrueInformation disclosure happens when the information can be read by an unauthorized party.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseThreat was migrated from V3.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Information Disclosure (v3)falseICan you access {target.Name} and bypass the permissions for the object? For example by editing the files directly with a hex editor, or reaching it via filesharing? Ensure that your program is the only one that can access the data, and that all other subjects have to use your interface.source is 'GE.P' and target is 'GE.DS' and source.implementsCustomAuthorizationMechanism is 'Yes'I2UserThreatShortDescriptiontrueInformation disclosure happens when the information can be read by an unauthorized party.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseCan you access {target.Name} and bypass the permissions for the object? For example by editing the files directly with a hex editor, or reaching it via filesharing? Ensure that your program is the only one that can access the data, and that all other subjects have to use your interface.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Authorization BypassfalseIData flowing across {flow.Name} may be sniffed by an attacker. Depending on what type of data an attacker can read, it may be used to attack other parts of the system or simply be a disclosure of information leading to compliance violations. Consider encrypting the data flow.flow.providesConfidentiality is 'Yes'((source is 'GE.P' or source is 'GE.EI') and target is 'GE.P' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')) or (source is 'GE.P' and target is 'GE.DS' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B'))I6UserThreatShortDescriptiontrueInformation disclosure happens when the information can be read by an unauthorized party.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseData flowing across {flow.Name} may be sniffed by an attacker. Depending on what type of data an attacker can read, it may be used to attack other parts of the system or simply be a disclosure of information leading to compliance violations. Consider encrypting the data flow.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Data Flow SniffingfalseIImproper data protection of {source.name} can allow an attacker to read information not intended for disclosure. Review authorization settings.source is 'GE.DS' and (target is 'GE.P' or target is 'GE.EI')I23UserThreatShortDescriptiontrueInformation disclosure happens when the information can be read by an unauthorized party.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseImproper data protection of {source.name} can allow an attacker to read information not intended for disclosure. Review authorization settings.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Weak Access Control for a ResourcefalseICredentials held at the server are often disclosed or tampered with and credentials stored on the client are often stolen. For server side, consider storing a salted hash of the credentials instead of storing the credentials themselves. If this is not possible due to business requirements, be sure to encrypt the credentials before storage, using an SDL-approved mechanism. For client side, if storing credentials is required, encrypt them and protect the data store in which they're storedsource is 'GE.P' and target is 'GE.DS' and target.storesCredentials is 'Yes'I24UserThreatShortDescriptiontrueInformation disclosure happens when the information can be read by an unauthorized party.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseCredentials held at the server are often disclosed or tampered with and credentials stored on the client are often stolen. For server side, consider storing a salted hash of the credentials instead of storing the credentials themselves. If this is not possible due to business requirements, be sure to encrypt the credentials before storage, using an SDL-approved mechanism. For client side, if storing credentials is required, encrypt them and protect the data store in which they're storedcf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Weak Credential StoragefalseICredentials on the wire are often subject to sniffing by an attacker. Are the credentials re-usable/re-playable? Are credentials included in a message? For example, sending a zip file with the password in the email. Use strong cryptography for the transmission of credentials. Use the OS libraries if at all possible, and consider cryptographic algorithm agility, rather than hardcoding a choice.flow is 'SE.DF.TMCore.HTTPS' or flow is 'SE.DF.TMCore.IPsec'source is 'GE.P' and (target is 'GE.P' or target is 'GE.DS') and (flow crosses 'SE.TB.L.TMCore.Machine')I25UserThreatShortDescriptiontrueInformation disclosure happens when the information can be read by an unauthorized party.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseCredentials on the wire are often subject to sniffing by an attacker. Are the credentials re-usable/re-playable? Are credentials included in a message? For example, sending a zip file with the password in the email. Use strong cryptography for the transmission of credentials. Use the OS libraries if at all possible, and consider cryptographic algorithm agility, rather than hardcoding a choice.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Weak Credential TransitfalseICustom authentication schemes are susceptible to common weaknesses such as weak credential change management, credential equivalence, easily guessable credentials, null credentials, downgrade authentication or a weak credential change management system. Consider the impact and potential mitigations for your custom authentication scheme.source is 'GE.P' and target is 'GE.P' and source.implementsAuthenticationScheme is 'Yes'I26UserThreatShortDescriptiontrueInformation disclosure happens when the information can be read by an unauthorized party.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseCustom authentication schemes are susceptible to common weaknesses such as weak credential change management, credential equivalence, easily guessable credentials, null credentials, downgrade authentication or a weak credential change management system. Consider the impact and potential mitigations for your custom authentication scheme.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Weak Authentication SchemefalseDThreat was migrated from V3.source is 'ROOT'DUUserThreatShortDescriptiontrueDenial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseThreat was migrated from V3.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Denial Of Service (v3)falseDDoes {source.Name} or {target.Name} take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout.source is 'GE.P' and target is 'GE.DS'D2UserThreatShortDescriptiontrueDenial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseDoes {source.Name} or {target.Name} take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Potential Excessive Resource Consumption for {source.Name} or {target.Name}falseD{target.Name} crashes, halts, stops or runs slowly; in all cases violating an availability metric.target is 'GE.P' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')D3UserThreatShortDescriptiontrueDenial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{target.Name} crashes, halts, stops or runs slowly; in all cases violating an availability metric.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Potential Process Crash or Stop for {target.Name}falseDAn external agent interrupts data flowing across a trust boundary in either direction.(flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')D4UserThreatShortDescriptiontrueDenial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseAn external agent interrupts data flowing across a trust boundary in either direction.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Data Flow {flow.Name} Is Potentially InterruptedfalseDAn external agent prevents access to a data store on the other side of the trust boundary.(source is 'GE.DS' or target is 'GE.DS') and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')D5UserThreatShortDescriptiontrueDenial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseAn external agent prevents access to a data store on the other side of the trust boundary.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Data Store InaccessiblefalseEThreat was migrated from V3.source is 'ROOT'EUUserThreatShortDescriptiontrueA user subject gains increased capability or privilege by taking advantage of an implementation bug.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseThreat was migrated from V3.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Elevation Of Privilege (v3)falseECommon SSO implementations such as OAUTH2 and OAUTH Wrap are vulnerable to MitM attacks.(target is 'SE.EI.TMCore.AuthProvider' and target.MS is 'Yes')target is 'SE.EI.TMCore.AuthProvider'E3UserThreatShortDescriptiontrueA user subject gains increased capability or privilege by taking advantage of an implementation bug.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseCommon SSO implementations such as OAUTH2 and OAUTH Wrap are vulnerable to MitM attacks.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Weakness in SSO AuthorizationfalseE{target.Name} may be able to impersonate the context of {source.Name} in order to gain additional privilege.(source is 'GE.EI' or source is 'GE.P') and target is 'GE.P'E5UserThreatShortDescriptiontrueA user subject gains increased capability or privilege by taking advantage of an implementation bug.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{target.Name} may be able to impersonate the context of {source.Name} in order to gain additional privilege.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Elevation Using ImpersonationfalseE{source.Name} may be able to remotely execute code for {target.Name}.target is 'GE.P' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')E6UserThreatShortDescriptiontrueA user subject gains increased capability or privilege by taking advantage of an implementation bug.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalse{source.Name} may be able to remotely execute code for {target.Name}.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1{target.Name} May be Subject to Elevation of Privilege Using Remote Code ExecutionfalseEAn attacker may pass data into {target.Name} in order to change the flow of program execution within {target.Name} to the attacker's choosing.target is 'GE.P' and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')E7UserThreatShortDescriptiontrueA user subject gains increased capability or privilege by taking advantage of an implementation bug.5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseAn attacker may pass data into {target.Name} in order to change the flow of program execution within {target.Name} to the attacker's choosing.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Elevation by Changing the Execution Flow in {target.Name}falseECross-site request forgery (CSRF or XSRF) is a type of attack in which an attacker forces a user's browser to make a forged request to a vulnerable site by exploiting an existing trust relationship between the browser and the vulnerable web site. In a simple scenario, a user is logged in to web site A using a cookie as a credential. The other browses to web site B. Web site B returns a page with a hidden form that posts to web site A. Since the browser will carry the user's cookie to web site A, web site B now can take any action on web site A, for example, adding an admin to an account. The attack can be used to exploit any requests that the browser automatically authenticates, e.g. by session cookie, integrated authentication, IP whitelisting. The attack can be carried out in many ways such as by luring the victim to a site under control of the attacker, getting the user to click a link in a phishing email, or hacking a reputable web site that the victim will visit. The issue can only be resolved on the server side by requiring that all authenticated state-changing requests include an additional piece of secret payload (canary or CSRF token) which is known only to the legitimate web site and the browser and which is protected in transit through SSL/TLS. See the Forgery Protection property on the flow stencil for a list of mitigations.(source is 'SE.P.TMCore.OSProcess' or source is 'SE.P.TMCore.Thread' or source is 'SE.P.TMCore.KernelThread' or source is 'SE.P.TMCore.WinApp' or source is 'SE.P.TMCore.NetApp' or source is 'SE.P.TMCore.WebServer' or source is 'SE.P.TMCore.Win32Service' or source is 'SE.P.TMCore.WebSvc' or source is 'SE.P.TMCore.VM' or (source is 'SE.P.TMCore.Modern' and source.internetClientServer is 'No' and source.internetClient is 'No' ) or source is 'SE.EI.TMCore.AuthProvider' or source is 'SE.EI.TMCore.WebSvc' or source is 'SE.EI.TMCore.WebApp' or source is 'SE.EI.TMCore.Megasevrice' or source is 'SE.EI.TMCore.CRT' or source is 'SE.EI.TMCore.NFX' or source is 'SE.EI.TMCore.WinRT' ) or (target is 'SE.P.TMCore.ThickClient' or target is 'SE.P.TMCore.BrowserClient' or target is 'SE.P.TMCore.PlugIn' or target is 'SE.P.TMCore.Modern') or (flow crosses 'SE.TB.L.TMCore.Machine' or flow crosses 'SE.TB.L.TMCore.Kernel' or flow crosses 'SE.TB.L.TMCore.AppContainer' or flow crosses 'SE.TB.B.TMCore.CorpNet' or flow crosses 'SE.TB.B.TMCore.Sandbox')(source is 'GE.P' or source is 'GE.EI') and (target is 'GE.P' ) and (flow.authenticatesSource is 'Not Selected' or flow.authenticatesSource is 'Yes') and (flow.54851a3b-65da-4902-b4e0-94ef015be735 is 'None' or flow.54851a3b-65da-4902-b4e0-94ef015be735 is 'Not Selected' ) and (flow crosses 'GE.TB.L' or flow crosses 'GE.TB.B')8404dcf5-bdd8-4902-abc2-3b6c967b0261UserThreatShortDescriptiontrue5d3b996b-aed5-4d95-8cf6-617bb67bf0421UserThreatDescriptionfalseCross-site request forgery (CSRF or XSRF) is a type of attack in which an attacker forces a user's browser to make a forged request to a vulnerable site by exploiting an existing trust relationship between the browser and the vulnerable web site. In a simple scenario, a user is logged in to web site A using a cookie as a credential. The other browses to web site B. Web site B returns a page with a hidden form that posts to web site A. Since the browser will carry the user's cookie to web site A, web site B now can take any action on web site A, for example, adding an admin to an account. The attack can be used to exploit any requests that the browser automatically authenticates, e.g. by session cookie, integrated authentication, IP whitelisting. The attack can be carried out in many ways such as by luring the victim to a site under control of the attacker, getting the user to click a link in a phishing email, or hacking a reputable web site that the victim will visit. The issue can only be resolved on the server side by requiring that all authenticated state-changing requests include an additional piece of secret payload (canary or CSRF token) which is known only to the legitimate web site and the browser and which is protected in transit through SSL/TLS. See the Forgery Protection property on the flow stencil for a list of mitigations.cf377f97-9dea-42d6-ae63-b097c4a8ec4d0Priorityfalsebc9c6e2a-15d0-4863-9cac-589e51e4ca1e1Cross Site Request Forgery
\ No newline at end of file diff --git a/Deployment/AadAppManifest.json b/Deployment/AadAppManifest.json index e410284b3..93e41f831 100644 --- a/Deployment/AadAppManifest.json +++ b/Deployment/AadAppManifest.json @@ -1,31 +1,31 @@ [ - { - "resourceAppId": "00000003-0000-0000-c000-000000000000", - "resourceAccess": [ - { - "id": "5f8c59db-677d-491f-a6b8-5f174b11ec1d", - "type": "Scope" - }, - { - "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", - "type": "Scope" - }, - { - "id": "88e58d74-d3df-44f3-ad47-e89edf4472e4", - "type": "Scope" - }, - { - "id": "5b567255-7703-4780-807c-7be8301ae99b", - "type": "Role" - }, - { - "id": "df021288-bdef-4463-88db-98f22de89214", - "type": "Role" - }, - { - "id": "74ef0291-ca83-4d02-8c7e-d2391e6a444f", - "type": "Role" - } - ] - } -] \ No newline at end of file + { + "resourceAppId": "00000003-0000-0000-c000-000000000000", + "resourceAccess": [ + { + "id": "bc024368-1153-4739-b217-4326f2e966d0", + "type": "Scope" + }, + { + "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", + "type": "Scope" + }, + { + "id": "88e58d74-d3df-44f3-ad47-e89edf4472e4", + "type": "Scope" + }, + { + "id": "98830695-27a2-44f7-8c18-0c3ebc9698f6", + "type": "Role" + }, + { + "id": "df021288-bdef-4463-88db-98f22de89214", + "type": "Role" + }, + { + "id": "74ef0291-ca83-4d02-8c7e-d2391e6a444f", + "type": "Role" + } + ] + } +] diff --git a/Deployment/azuredeploy.json b/Deployment/azuredeploy.json index cbcde321b..4e55a329a 100644 --- a/Deployment/azuredeploy.json +++ b/Deployment/azuredeploy.json @@ -39,6 +39,21 @@ "description": "The client secret of the author bot Azure AD app." } }, + "graphAppId": { + "type": "string", + "minLength": 36, + "maxLength": 36, + "metadata": { + "description": "The client ID of the Microsoft Graph Azure AD app, e.g., 123e4567-e89b-12d3-a456-426655440000." + } + }, + "graphAppSecret": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "The client secret of the Microsoft Graph Azure AD app." + } + }, "senderUPNList": { "type": "string", "minLength": 1, @@ -179,6 +194,62 @@ "description": "The branch of the GitHub repository to deploy." }, "defaultValue": "master" + }, + "serviceBusWebAppRoleNameGuid": { + "defaultValue": "958380b3-630d-4823-b933-f59d92cdcada", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "serviceBusPrepFuncRoleNameGuid": { + "defaultValue": "ce6ca916-08e9-4639-bfbe-9d098baf42ca", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "serviceBusSendFuncRoleNameGuid": { + "defaultValue": "960365a2-c7bf-4ff3-8887-efa86fe4a163", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "serviceBusDataFuncRoleNameGuid": { + "defaultValue": "d42703bc-421d-4d98-bc4d-cd2bb16e5b0a", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "storageAccountWebAppRoleNameGuid": { + "defaultValue": "edd0cc48-2cf7-490e-99e8-131311e42030", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "storageAccountPrepFuncRoleNameGuid": { + "defaultValue": "9332a9e9-93f4-48d9-8121-d279f30a732e", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "storageAccountDataFuncRoleNameGuid": { + "defaultValue": "5b67af51-4a98-47e1-9d22-745069f51a13", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } } }, "variables": { @@ -212,7 +283,24 @@ "ProactivelyInstallUserApp": "[parameters('ProactivelyInstallUserApp')]", "UserAppExternalId": "[parameters('UserAppExternalId')]", "i18n:DefaultCulture": "[parameters('DefaultCulture')]", - "i18n:SupportedCultures": "[parameters('SupportedCultures')]" + "i18n:SupportedCultures": "[parameters('SupportedCultures')]", + "AzureserviceBusDataOwner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '090c5cfd-751d-490a-894a-3ce6f1109419')]", + "StorageBlobDataContributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "keyvaultName": "[concat(variables('botAppName'), 'vault')]", + "keyVaultUrl": "[concat('https://',variables('keyvaultName'), '.vault.azure.net')]", + "subscriptionTenantId": "[subscription().tenantId]", + "StorageAccountSecretName": "[concat(variables('keyVaultName'), 'StorageAccountConnectionString')]", + "ServiceBusSecretName": "[concat(variables('keyVaultName'), 'ServiceBusConnectionString')]", + "AppInsightsSecretName": "[concat(variables('keyVaultName'),'AppInsightsKey')]", + "UserAppSecretName": "[concat(variables('keyVaultName'),'UserAppPassword')]", + "AuthorAppSecretName": "[concat(variables('keyVaultName'),'AuthorAppPassword')]", + "GraphAppSecretName": "[concat(variables('keyVaultName'),'GraphAppPassword')]", + "StorageAccountSecretResourceId": "[resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "ServiceBusSecretResourceId": "[resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]", + "AppInsightsSecretResourceId": "[resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('AppInsightsSecretName'))]", + "UserAppSecretResourceId": "[resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('UserAppSecretName'))]", + "AuthorAppSecretResourceId": "[resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('AuthorAppSecretName'))]", + "GraphAppSecretResourceId": "[resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('GraphAppSecretName'))]" }, "resources": [ { @@ -229,6 +317,106 @@ "name": "Standard_LRS" } }, + { + "type": "Microsoft.ServiceBus/namespaces", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusNamespaceName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "resources": [ + { + "type": "Queues", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusSendQueueName')]", + "dependsOn": [ + "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "enableBatchedOperations": true, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "status": "Active", + "enablePartitioning": false, + "enableExpress": false + } + }, + { + "type": "Queues", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusDataQueueName')]", + "dependsOn": [ + "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "enableBatchedOperations": true, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "status": "Active", + "enablePartitioning": false, + "enableExpress": false + } + }, + { + "type": "Queues", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusPrepareToSendQueueName')]", + "dependsOn": [ + "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "enableBatchedOperations": true, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "status": "Active", + "enablePartitioning": false, + "enableExpress": false + } + }, + { + "type": "Queues", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusExportQueueName')]", + "dependsOn": [ + "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "enableBatchedOperations": true, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "status": "Active", + "enablePartitioning": false, + "enableExpress": false + } + } + ] + }, { "type": "Microsoft.Web/serverfarms", "apiVersion": "2016-09-01", @@ -247,153 +435,6 @@ "capacity": 0 } }, - { - "apiVersion": "2016-08-01", - "type": "Microsoft.Web/sites", - "name": "[variables('botAppName')]", - "location": "[parameters('location')]", - "kind": "app", - "properties": { - "name": "[variables('botAppName')]", - "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", - "enabled": true, - "reserved": false, - "clientAffinityEnabled": true, - "clientCertEnabled": false, - "hostNamesDisabled": false, - "containerSize": 0, - "dailyMemoryTimeQuota": 0, - "httpsOnly": true, - "siteConfig": { - "alwaysOn": "[not(variables('isSharedPlan'))]", - "appSettings": [ - { - "name": "PROJECT", - "value": "Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj" - }, - { - "name": "SITE_ROLE", - "value": "app" - }, - { - "name": "i18n:DefaultCulture", - "value": "[variables('i18n:DefaultCulture')]" - }, - { - "name": "i18n:SupportedCultures", - "value": "[variables('i18n:SupportedCultures')]" - }, - { - "name": "ProactivelyInstallUserApp", - "value": "[variables('ProactivelyInstallUserApp')]" - }, - { - "name": "UserAppExternalId", - "value": "[variables('UserAppExternalId')]" - }, - { - "name": "AzureAd:TenantId", - "value": "[parameters('tenantId')]" - }, - { - "name": "AzureAd:ClientId", - "value": "[parameters('authorClientId')]" - }, - { - "name": "AzureAd:ClientSecret", - "value": "[parameters('authorClientSecret')]" - }, - { - "name": "AzureAd:ApplicationIdURI", - "value": "[if(variables('useFrontDoor'), concat('api://', variables('frontDoorDomain')), '')]" - }, - { - "name": "UserAppId", - "value": "[parameters('userClientId')]" - }, - { - "name": "UserAppPassword", - "value": "[parameters('userClientSecret')]" - }, - { - "name": "AuthorAppId", - "value": "[parameters('authorClientId')]" - }, - { - "name": "AuthorAppPassword", - "value": "[parameters('authorClientSecret')]" - }, - { - "name": "StorageAccountConnectionString", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]" - }, - { - "name": "ServiceBusConnection", - "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryConnectionString]" - }, - { - "name": "AllowedTenants", - "value": "[parameters('tenantId')]" - }, - { - "name": "DisableTenantFilter", - "value": "false" - }, - { - "name": "AuthorizedCreatorUpns", - "value": "[parameters('senderUPNList')]" - }, - { - "name": "DisableAuthentication", - "value": "false" - }, - { - "name": "DisableCreatorUpnCheck", - "value": "false" - }, - { - "name": "APPINSIGHTS_INSTRUMENTATIONKEY", - "value": "[reference(resourceId('Microsoft.Insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]" - }, - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.15.2" - } - ], - "cors": { - "supportCredentials": true, - "allowedOrigins": [ - "[concat('https://', variables('frontDoorDomain'))]" - ] - } - } - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", - "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", - "[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]", - "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", - "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]", - "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]", - "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" - ], - "resources": [ - { - "apiVersion": "2016-08-01", - "name": "web", - "type": "sourcecontrols", - "condition": "[not(empty(parameters('gitRepoUrl')))]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', variables('botAppName'))]" - ], - "properties": { - "RepoUrl": "[parameters('gitRepoUrl')]", - "branch": "[parameters('gitBranch')]", - "IsManualIntegration": true - } - } - ] - }, { "apiVersion": "2015-05-01", "name": "[variables('appInsightsName')]", @@ -486,101 +527,104 @@ ] }, { - "type": "Microsoft.ServiceBus/namespaces", - "apiVersion": "2017-04-01", - "name": "[variables('serviceBusNamespaceName')]", + "apiVersion": "2016-08-01", + "type": "Microsoft.Web/sites", + "name": "[variables('botAppName')]", "location": "[parameters('location')]", - "sku": { - "name": "Basic", - "tier": "Basic" + "kind": "app", + "identity": { + "type": "SystemAssigned" }, - "resources": [ - { - "type": "Queues", - "apiVersion": "2017-04-01", - "name": "[variables('serviceBusSendQueueName')]", - "dependsOn": [ - "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" - ], - "properties": { - "lockDuration": "PT5M", - "maxSizeInMegabytes": 1024, - "requiresDuplicateDetection": false, - "requiresSession": false, - "defaultMessageTimeToLive": "P14D", - "deadLetteringOnMessageExpiration": false, - "enableBatchedOperations": true, - "duplicateDetectionHistoryTimeWindow": "PT10M", - "maxDeliveryCount": 10, - "status": "Active", - "enablePartitioning": false, - "enableExpress": false - } - }, - { - "type": "Queues", - "apiVersion": "2017-04-01", - "name": "[variables('serviceBusDataQueueName')]", - "dependsOn": [ - "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" - ], - "properties": { - "lockDuration": "PT5M", - "maxSizeInMegabytes": 1024, - "requiresDuplicateDetection": false, - "requiresSession": false, - "defaultMessageTimeToLive": "P14D", - "deadLetteringOnMessageExpiration": false, - "enableBatchedOperations": true, - "duplicateDetectionHistoryTimeWindow": "PT10M", - "maxDeliveryCount": 10, - "status": "Active", - "enablePartitioning": false, - "enableExpress": false + "properties": { + "name": "[variables('botAppName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "enabled": true, + "reserved": false, + "clientAffinityEnabled": true, + "clientCertEnabled": false, + "hostNamesDisabled": false, + "containerSize": 0, + "dailyMemoryTimeQuota": 0, + "httpsOnly": true, + "siteConfig": { + "ftpsState": "Disabled", + "alwaysOn": "[not(variables('isSharedPlan'))]", + "cors": { + "supportCredentials": true, + "allowedOrigins": [ + "[concat('https://', variables('frontDoorDomain'))]" + ] } - }, + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]", + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" + ], + "resources": [ { - "type": "Queues", - "apiVersion": "2017-04-01", - "name": "[variables('serviceBusPrepareToSendQueueName')]", + "apiVersion": "2015-08-01", + "name": "appsettings", + "type": "config", "dependsOn": [ - "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]", + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]" ], "properties": { - "lockDuration": "PT5M", - "maxSizeInMegabytes": 1024, - "requiresDuplicateDetection": false, - "requiresSession": false, - "defaultMessageTimeToLive": "P14D", - "deadLetteringOnMessageExpiration": false, - "enableBatchedOperations": true, - "duplicateDetectionHistoryTimeWindow": "PT10M", - "maxDeliveryCount": 10, - "status": "Active", - "enablePartitioning": false, - "enableExpress": false + "PROJECT": "Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj", + "SITE_ROLE": "app", + "i18n:DefaultCulture": "[variables('i18n:DefaultCulture')]", + "i18n:SupportedCultures": "[variables('i18n:SupportedCultures')]", + "ProactivelyInstallUserApp": "[variables('ProactivelyInstallUserApp')]", + "UserAppExternalId": "[variables('UserAppExternalId')]", + "AzureAd:TenantId": "[parameters('tenantId')]", + "AzureAd:ClientId": "[parameters('graphAppId')]", + "AzureAd:ClientSecret": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('GraphAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "AzureAd:ApplicationIdURI": "[if(variables('useFrontDoor'), concat('api://', variables('frontDoorDomain')), '')]", + "UserAppId": "[parameters('userClientId')]", + "UserAppPassword": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('UserAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "AuthorAppId": "[parameters('authorClientId')]", + "AuthorAppPassword": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AuthorAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "GraphAppId": "[parameters('graphAppId')]", + "GraphAppPassword": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('GraphAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "StorageAccountConnectionString": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusConnection": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('ServiceBusSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusNamespace": "[concat(variables('serviceBusNamespaceName'),'.servicebus.windows.net')]", + "StorageAccountName": "[variables('storageAccountName')]", + "UseManagedIdentity": "true", + "AllowedTenants": "[parameters('tenantId')]", + "DisableTenantFilter": "false", + "AuthorizedCreatorUpns": "[parameters('senderUPNList')]", + "UseCertificate": "false", + "DisableAuthentication": "false", + "DisableCreatorUpnCheck": "false", + "WEBSITE_LOAD_CERTIFICATES": "*", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AppInsightsSecretResourceId'), '2015-06-01').secretUriWithVersion, ')')]", + "WEBSITE_NODE_DEFAULT_VERSION": "10.15.2", + "KeyVault:Url": "[variables('keyVaultUrl')]", + "DOTNET_ADD_GLOBAL_TOOLS_TO_PATH": "false" } }, { - "type": "Queues", - "apiVersion": "2017-04-01", - "name": "[variables('serviceBusExportQueueName')]", + "apiVersion": "2016-08-01", + "name": "web", + "type": "sourcecontrols", + "condition": "[not(empty(parameters('gitRepoUrl')))]", "dependsOn": [ - "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]", + "[resourceId('Microsoft.Web/sites/config', variables('botAppName'), 'appsettings')]" ], "properties": { - "lockDuration": "PT5M", - "maxSizeInMegabytes": 1024, - "requiresDuplicateDetection": false, - "requiresSession": false, - "defaultMessageTimeToLive": "P14D", - "deadLetteringOnMessageExpiration": false, - "enableBatchedOperations": true, - "duplicateDetectionHistoryTimeWindow": "PT10M", - "maxDeliveryCount": 10, - "status": "Active", - "enablePartitioning": false, - "enableExpress": false + "RepoUrl": "[parameters('gitRepoUrl')]", + "branch": "[parameters('gitBranch')]", + "IsManualIntegration": true } } ] @@ -591,6 +635,9 @@ "name": "[variables('prepFunctionAppName')]", "location": "[parameters('location')]", "kind": "functionapp", + "identity": { + "type": "SystemAssigned" + }, "properties": { "name": "[variables('prepFunctionAppName')]", "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", @@ -598,89 +645,8 @@ "clientAffinityEnabled": false, "httpsOnly": true, "siteConfig": { - "alwaysOn": "[not(variables('isSharedPlan'))]", - "appSettings": [ - { - "name": "PROJECT", - "value": "Source\\CompanyCommunicator.Prep.Func\\Microsoft.Teams.Apps.CompanyCommunicator.Prep.Func.csproj" - }, - { - "name": "SITE_ROLE", - "value": "function" - }, - { - "name": "i18n:DefaultCulture", - "value": "[variables('i18n:DefaultCulture')]" - }, - { - "name": "i18n:SupportedCultures", - "value": "[variables('i18n:SupportedCultures')]" - }, - { - "name": "ProactivelyInstallUserApp", - "value": "[variables('ProactivelyInstallUserApp')]" - }, - { - "name": "UserAppExternalId", - "value": "[variables('UserAppExternalId')]" - }, - { - "name": "AzureWebJobsStorage", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1,';')]" - }, - { - "name": "AzureWebJobsDashboard", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1,';')]" - }, - { - "name": "FUNCTIONS_EXTENSION_VERSION", - "value": "~3" - }, - { - "name": "FUNCTIONS_WORKER_RUNTIME", - "value": "dotnet" - }, - { - "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]" - }, - { - "name": "WEBSITE_CONTENTSHARE", - "value": "[toLower(variables('prepFunctionAppName'))]" - }, - { - "name": "APPINSIGHTS_INSTRUMENTATIONKEY", - "value": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]" - }, - { - "name": "AuthorAppId", - "value": "[parameters('authorClientId')]" - }, - { - "name": "AuthorAppPassword", - "value": "[parameters('authorClientSecret')]" - }, - { - "name": "UserAppId", - "value": "[parameters('userClientId')]" - }, - { - "name": "UserAppPassword", - "value": "[parameters('userClientSecret')]" - }, - { - "name": "TenantId", - "value": "[parameters('tenantId')]" - }, - { - "name": "StorageAccountConnectionString", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]" - }, - { - "name": "ServiceBusConnection", - "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryConnectionString]" - } - ] + "ftpsState": "Disabled", + "alwaysOn": "[not(variables('isSharedPlan'))]" } }, "dependsOn": [ @@ -689,13 +655,59 @@ "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]" ], "resources": [ + { + "apiVersion": "2015-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]", + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]" + ], + "properties": { + "PROJECT": "Source\\CompanyCommunicator.Prep.Func\\Microsoft.Teams.Apps.CompanyCommunicator.Prep.Func.csproj", + "SITE_ROLE": "function", + "i18n:DefaultCulture": "[variables('i18n:DefaultCulture')]", + "i18n:SupportedCultures": "[variables('i18n:SupportedCultures')]", + "ProactivelyInstallUserApp": "[variables('ProactivelyInstallUserApp')]", + "UserAppExternalId": "[variables('UserAppExternalId')]", + "TenantId": "[parameters('tenantId')]", + "UserAppId": "[parameters('userClientId')]", + "UserAppPassword": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('UserAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "AuthorAppId": "[parameters('authorClientId')]", + "AuthorAppPassword": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AuthorAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "GraphAppId": "[parameters('graphAppId')]", + "GraphAppPassword": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('GraphAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "StorageAccountConnectionString": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusConnection": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('ServiceBusSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusNamespace": "[concat(variables('serviceBusNamespaceName'),'.servicebus.windows.net')]", + "StorageAccountName": "[variables('storageAccountName')]", + "UseManagedIdentity": "true", + "UseCertificate": "false", + "WEBSITE_LOAD_CERTIFICATES": "*", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AppInsightsSecretResourceId'), '2015-06-01').secretUriWithVersion, ')')]", + "KeyVault:Url": "[variables('keyVaultUrl')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "AzureWebJobsDashboard": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "FUNCTIONS_WORKER_RUNTIME": "dotnet", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "WEBSITE_CONTENTSHARE": "[toLower(variables('prepFunctionAppName'))]", + "AzureFunctionsJobHost__extensions__durableTask__maxConcurrentOrchestratorFunctions": "3", + "AzureFunctionsJobHost__extensions__durableTask__maxConcurrentActivityFunctions": "10", + "DOTNET_ADD_GLOBAL_TOOLS_TO_PATH": "false", + "WEBSITE_NODE_DEFAULT_VERSION": "10.15.2" + } + }, { "apiVersion": "2015-08-01", "name": "web", "type": "sourcecontrols", "condition": "[not(empty(parameters('gitRepoUrl')))]", "dependsOn": [ - "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]" + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites/config', variables('prepFunctionAppName'), 'appsettings')]" ], "properties": { "RepoUrl": "[parameters('gitRepoUrl')]", @@ -711,6 +723,9 @@ "name": "[variables('sendFunctionAppName')]", "location": "[parameters('location')]", "kind": "functionapp", + "identity": { + "type": "SystemAssigned" + }, "properties": { "name": "[variables('sendFunctionAppName')]", "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", @@ -718,73 +733,8 @@ "clientAffinityEnabled": false, "httpsOnly": true, "siteConfig": { - "alwaysOn": "[not(variables('isSharedPlan'))]", - "appSettings": [ - { - "name": "PROJECT", - "value": "Source\\CompanyCommunicator.Send.Func\\Microsoft.Teams.Apps.CompanyCommunicator.Send.Func.csproj" - }, - { - "name": "SITE_ROLE", - "value": "function" - }, - { - "name": "i18n:DefaultCulture", - "value": "[variables('i18n:DefaultCulture')]" - }, - { - "name": "i18n:SupportedCultures", - "value": "[variables('i18n:SupportedCultures')]" - }, - { - "name": "AzureWebJobsStorage", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1,';')]" - }, - { - "name": "AzureWebJobsDashboard", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1,';')]" - }, - { - "name": "FUNCTIONS_EXTENSION_VERSION", - "value": "~3" - }, - { - "name": "FUNCTIONS_WORKER_RUNTIME", - "value": "dotnet" - }, - { - "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]" - }, - { - "name": "WEBSITE_CONTENTSHARE", - "value": "[toLower(variables('sendFunctionAppName'))]" - }, - { - "name": "APPINSIGHTS_INSTRUMENTATIONKEY", - "value": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]" - }, - { - "name": "MaxNumberOfAttempts", - "value": "5" - }, - { - "name": "UserAppId", - "value": "[parameters('userClientId')]" - }, - { - "name": "UserAppPassword", - "value": "[parameters('userClientSecret')]" - }, - { - "name": "StorageAccountConnectionString", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]" - }, - { - "name": "ServiceBusConnection", - "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryConnectionString]" - } - ] + "ftpsState": "Disabled", + "alwaysOn": "[not(variables('isSharedPlan'))]" } }, "dependsOn": [ @@ -793,13 +743,52 @@ "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]" ], "resources": [ + { + "apiVersion": "2015-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]", + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]" + ], + "properties": { + "PROJECT": "Source\\CompanyCommunicator.Send.Func\\Microsoft.Teams.Apps.CompanyCommunicator.Send.Func.csproj", + "SITE_ROLE": "function", + "i18n:DefaultCulture": "[variables('i18n:DefaultCulture')]", + "i18n:SupportedCultures": "[variables('i18n:SupportedCultures')]", + "ProactivelyInstallUserApp": "[variables('ProactivelyInstallUserApp')]", + "UserAppId": "[parameters('userClientId')]", + "UserAppPassword": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('UserAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "StorageAccountConnectionString": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusConnection": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('ServiceBusSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusNamespace": "[concat(variables('serviceBusNamespaceName'),'.servicebus.windows.net')]", + "StorageAccountName": "[variables('storageAccountName')]", + "UseManagedIdentity": "true", + "UseCertificate": "false", + "MaxNumberOfAttempts": "5", + "WEBSITE_LOAD_CERTIFICATES": "*", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AppInsightsSecretResourceId'), '2015-06-01').secretUriWithVersion, ')')]", + "KeyVault:Url": "[variables('keyVaultUrl')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "AzureWebJobsDashboard": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "FUNCTIONS_WORKER_RUNTIME": "dotnet", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "WEBSITE_CONTENTSHARE": "[toLower(variables('sendFunctionAppName'))]", + "DOTNET_ADD_GLOBAL_TOOLS_TO_PATH": "false", + "WEBSITE_NODE_DEFAULT_VERSION": "10.15.2" + } + }, { "apiVersion": "2015-08-01", "name": "web", "type": "sourcecontrols", "condition": "[not(empty(parameters('gitRepoUrl')))]", "dependsOn": [ - "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]" + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites/config', variables('sendFunctionAppName'), 'appsettings')]" ], "properties": { "RepoUrl": "[parameters('gitRepoUrl')]", @@ -815,6 +804,9 @@ "name": "[variables('dataFunctionAppName')]", "location": "[parameters('location')]", "kind": "functionapp", + "identity": { + "type": "SystemAssigned" + }, "properties": { "name": "[variables('dataFunctionAppName')]", "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", @@ -822,85 +814,8 @@ "clientAffinityEnabled": false, "httpsOnly": true, "siteConfig": { - "alwaysOn": "[not(variables('isSharedPlan'))]", - "appSettings": [ - { - "name": "PROJECT", - "value": "Source\\CompanyCommunicator.Data.Func\\Microsoft.Teams.Apps.CompanyCommunicator.Data.Func.csproj" - }, - { - "name": "SITE_ROLE", - "value": "function" - }, - { - "name": "i18n:DefaultCulture", - "value": "[variables('i18n:DefaultCulture')]" - }, - { - "name": "i18n:SupportedCultures", - "value": "[variables('i18n:SupportedCultures')]" - }, - { - "name": "AzureWebJobsStorage", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1,';')]" - }, - { - "name": "AzureWebJobsDashboard", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1,';')]" - }, - { - "name": "FUNCTIONS_EXTENSION_VERSION", - "value": "~3" - }, - { - "name": "FUNCTIONS_WORKER_RUNTIME", - "value": "dotnet" - }, - { - "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]" - }, - { - "name": "WEBSITE_CONTENTSHARE", - "value": "[toLower(variables('dataFunctionAppName'))]" - }, - { - "name": "APPINSIGHTS_INSTRUMENTATIONKEY", - "value": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]" - }, - { - "name": "AuthorAppId", - "value": "[parameters('authorClientId')]" - }, - { - "name": "AuthorAppPassword", - "value": "[parameters('authorClientSecret')]" - }, - { - "name": "UserAppId", - "value": "[parameters('userClientId')]" - }, - { - "name": "UserAppPassword", - "value": "[parameters('userClientSecret')]" - }, - { - "name": "CleanUpScheduleTriggerTime", - "value": "30 23 * * *" - }, - { - "name": "CleanUpFile", - "value": "1" - }, - { - "name": "StorageAccountConnectionString", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]" - }, - { - "name": "ServiceBusConnection", - "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryConnectionString]" - } - ] + "ftpsState": "Disabled", + "alwaysOn": "[not(variables('isSharedPlan'))]" } }, "dependsOn": [ @@ -909,13 +824,55 @@ "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]" ], "resources": [ + { + "apiVersion": "2015-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]", + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]" + ], + "properties": { + "PROJECT": "Source\\CompanyCommunicator.Data.Func\\Microsoft.Teams.Apps.CompanyCommunicator.Data.Func.csproj", + "SITE_ROLE": "function", + "i18n:DefaultCulture": "[variables('i18n:DefaultCulture')]", + "i18n:SupportedCultures": "[variables('i18n:SupportedCultures')]", + "ProactivelyInstallUserApp": "[variables('ProactivelyInstallUserApp')]", + "UserAppId": "[parameters('userClientId')]", + "UserAppPassword": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('UserAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "AuthorAppId": "[parameters('authorClientId')]", + "AuthorAppPassword": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AuthorAppSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "StorageAccountConnectionString": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusConnection": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('ServiceBusSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusNamespace": "[concat(variables('serviceBusNamespaceName'),'.servicebus.windows.net')]", + "StorageAccountName": "[variables('storageAccountName')]", + "UseManagedIdentity": "true", + "UseCertificate": "false", + "WEBSITE_LOAD_CERTIFICATES": "*", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AppInsightsSecretResourceId'), '2015-06-01').secretUriWithVersion, ')')]", + "KeyVault:Url": "[variables('keyVaultUrl')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "AzureWebJobsDashboard": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "FUNCTIONS_WORKER_RUNTIME": "dotnet", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "WEBSITE_CONTENTSHARE": "[toLower(variables('dataFunctionAppName'))]", + "CleanUpScheduleTriggerTime": "30 23 * * *", + "CleanUpFile": "1", + "DOTNET_ADD_GLOBAL_TOOLS_TO_PATH": "false", + "WEBSITE_NODE_DEFAULT_VERSION": "10.15.2" + } + }, { "apiVersion": "2015-08-01", "name": "web", "type": "sourcecontrols", "condition": "[not(empty(parameters('gitRepoUrl')))]", "dependsOn": [ - "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites/config', variables('dataFunctionAppName'), 'appsettings')]" ], "properties": { "RepoUrl": "[parameters('gitRepoUrl')]", @@ -925,6 +882,296 @@ } ] }, + { + "type": "Microsoft.KeyVault/vaults", + "name": "[variables('keyvaultName')]", + "apiVersion": "2016-10-01", + "location": "[parameters('location')]", + + "tags": { + "displayName": "KeyVault" + }, + "properties": { + "tenantId": "[variables('subscriptionTenantId')]", + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": true, + "accessPolicies": [ + { + "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('botAppName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[reference(concat('Microsoft.Web/sites/', variables('botAppName')), '2018-02-01', 'Full').identity.principalId]", + "permissions": { + "keys": [], + "secrets": [ + "Get", + "Set", + "Restore" + ], + "certificates": [] + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]" + ] + }, + { + "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('prepFunctionAppName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[reference(concat('Microsoft.Web/sites/', variables('prepFunctionAppName')), '2018-02-01', 'Full').identity.principalId]", + "permissions": { + "keys": [], + "secrets": [ + "Get" + ], + "certificates": [ + "Get" + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]" + ] + }, + { + "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('sendFunctionAppName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[reference(concat('Microsoft.Web/sites/', variables('sendFunctionAppName')), '2018-02-01', 'Full').identity.principalId]", + "permissions": { + "keys": [], + "secrets": [ + "Get" + ], + "certificates": [ + "Get" + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]" + ] + }, + { + "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('dataFunctionAppName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[reference(concat('Microsoft.Web/sites/', variables('dataFunctionAppName')), '2018-02-01', 'Full').identity.principalId]", + "permissions": { + "keys": [], + "secrets": [ + "Get" + ], + "certificates": [ + "Get" + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" + ] + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + } + }, + "resources": [ + { + "type": "secrets", + "apiVersion": "2016-10-01", + "name": "[variables('StorageAccountSecretName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "attributes": { + "enabled": true + } + } + }, + { + "type": "secrets", + "apiVersion": "2016-10-01", + "name": "[variables('ServiceBusSecretName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryConnectionString]", + "attributes": { + "enabled": true + } + } + }, + { + "type": "secrets", + "apiVersion": "2016-10-01", + "name": "[variables('UserAppSecretName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyvaultName'))]" + ], + "properties": { + "value": "[parameters('userClientSecret')]", + "attributes": { + "enabled": true + } + } + }, + { + "type": "secrets", + "apiVersion": "2016-10-01", + "name": "[variables('AuthorAppSecretName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyvaultName'))]" + ], + "properties": { + "value": "[parameters('authorClientSecret')]", + "attributes": { + "enabled": true + } + } + }, + { + "type": "secrets", + "apiVersion": "2016-10-01", + "name": "[variables('GraphAppSecretName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyvaultName'))]" + ], + "properties": { + "value": "[parameters('graphAppSecret')]", + "attributes": { + "enabled": true + } + } + }, + { + "type": "secrets", + "name": "[variables('AppInsightsSecretName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-02-14", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]" + ], + "properties": { + "value": "[reference(resourceId('Microsoft.Insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]", + "attributes": { + "enabled": true + } + } + } + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('ServiceBusWebAppRoleNameGuid')]", + "scope": "[concat('Microsoft.ServiceBus/namespaces', '/', variables('serviceBusNamespaceName'))]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('AzureserviceBusDataOwner')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('botAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('ServiceBusPrepFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.ServiceBus/namespaces', '/', variables('serviceBusNamespaceName'))]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('AzureserviceBusDataOwner')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('prepFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('ServiceBusSendFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.ServiceBus/namespaces', '/', variables('serviceBusNamespaceName'))]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('AzureserviceBusDataOwner')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('sendFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('ServiceBusDataFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.ServiceBus/namespaces', '/', variables('serviceBusNamespaceName'))]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('AzureserviceBusDataOwner')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('dataFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('StorageAccountWebAppRoleNameGuid')]", + "scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageAccountName'))]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('StorageBlobDataContributor')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('botAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('StorageAccountPrepFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageAccountName'))]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('StorageBlobDataContributor')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('prepFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('StorageAccountDataFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageAccountName'))]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('StorageBlobDataContributor')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('dataFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, { "apiVersion": "2019-04-01", "type": "Microsoft.Network/frontDoors", @@ -1049,6 +1296,10 @@ } ], "outputs": { + "keyVaultName": { + "type": "string", + "value": "[variables('keyvaultName')]" + }, "authorBotId": { "type": "string", "value": "[parameters('authorClientId')]" diff --git a/Deployment/azuredeploywithcert.json b/Deployment/azuredeploywithcert.json new file mode 100644 index 000000000..ce378839d --- /dev/null +++ b/Deployment/azuredeploywithcert.json @@ -0,0 +1,1276 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "baseResourceName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The base name to use for the resources that will be provisioned." + } + }, + "userClientId": { + "type": "string", + "minLength": 36, + "maxLength": 36, + "metadata": { + "description": "The client ID of the user bot Azure AD app, e.g., 123e4567-e89b-12d3-a456-426655440000." + } + }, + "userAppCertName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The X.509 certificate name of the user bot Azure AD app." + } + }, + "authorClientId": { + "type": "string", + "minLength": 36, + "maxLength": 36, + "metadata": { + "description": "The client ID of the author bot Azure AD app, e.g., 123e4567-e89b-12d3-a456-426655440000." + } + }, + "authorAppCertName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The X.509 certificate name of the author bot Azure AD app." + } + }, + "graphAppId": { + "type": "string", + "minLength": 36, + "maxLength": 36, + "metadata": { + "description": "The client ID of the Microsoft Graph Azure AD app, e.g., 123e4567-e89b-12d3-a456-426655440000." + } + }, + "graphAppCertName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The X.509 certificate name of the Microsoft Graph Azure AD app." + } + }, + "senderUPNList": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Semicolon-delimited list of the user principal names (UPNs) allowed to send messages." + } + }, + "ProactivelyInstallUserApp": { + "defaultValue": true, + "type": "Bool", + "metadata": { + "description": "If proactive app installation should be enabled." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Object Id of the user to deploy to (If you are not sure how to get Object ID, please check Azure Active Directory in Azure Portal. Under Manage, click Users and select the appropriate user. The Object ID is shown in the Identity section). e.g 98f3ece2-3a5a-428b-aa4f-4c41b3f6eef0." + } + }, + "UserAppExternalId": { + "defaultValue": "148a66bb-e83d-425a-927d-09f4299a9274", + "minLength": 1, + "type": "String", + "metadata": { + "description": "User app external ID." + } + }, + "DefaultCulture": { + "defaultValue": "en-US", + "allowedValues": [ + "ar-SA", + "de-DE", + "en-US", + "es-ES", + "fr-FR", + "he-IL", + "ja-JP", + "ko-KR", + "pt-BR", + "ru-RU", + "zh-CN", + "zh-TW" + ], + "minLength": 1, + "type": "String", + "metadata": { + "description": "Default culture." + } + }, + "SupportedCultures": { + "defaultValue": "ar-SA,de-DE,en-US,es-ES,fr-FR,he-IL,ja-JP,ko-KR,pt-BR,ru-RU,zh-CN,zh-TW", + "minLength": 1, + "type": "String", + "metadata": { + "description": "Comma-delimited list of the supported cultures." + } + }, + "customDomainOption": { + "type": "string", + "allowedValues": [ + "Custom domain name (recommended)", + "Azure Front Door" + ], + "defaultValue": "Azure Front Door", + "metadata": { + "description": "How the app will be hosted on a domain that is not *.azurewebsites.net. Azure Front Door is an easy option that the template can set up automatically, but it comes with ongoing monthly costs. " + } + }, + "appDisplayName": { + "type": "string", + "defaultValue": "Company Communicator", + "minLength": 1, + "metadata": { + "description": "The app (and bot) display name." + } + }, + "appDescription": { + "type": "string", + "defaultValue": "Broadcast messages to multiple teams and people in one go", + "minLength": 1, + "metadata": { + "description": "The app (and bot) description." + } + }, + "appIconUrl": { + "type": "string", + "minLength": 1, + "defaultValue": "https://raw.githubusercontent.com/OfficeDev/microsoft-teams-company-communicator-app/master/Manifest/color.png", + "metadata": { + "description": "The link to the icon for the app. It must resolve to a PNG file." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "minLength": 1, + "maxLength": 36, + "metadata": { + "description": "The ID of the tenant to which the app will be deployed." + } + }, + "hostingPlanSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The pricing tier for the hosting plan." + } + }, + "hostingPlanSize": { + "type": "string", + "allowedValues": [ + "1", + "2", + "3" + ], + "defaultValue": "1", + "metadata": { + "description": "The size of the hosting plan (small, medium, or large)." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "gitRepoUrl": { + "type": "string", + "metadata": { + "description": "The URL to the GitHub repository to deploy." + }, + "defaultValue": "https://github.com/OfficeDev/microsoft-teams-company-communicator-app.git" + }, + "gitBranch": { + "type": "string", + "metadata": { + "description": "The branch of the GitHub repository to deploy." + }, + "defaultValue": "master" + }, + "serviceBusWebAppRoleNameGuid": { + "defaultValue": "958380b3-630d-4823-b933-f59d92cdcada", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "serviceBusPrepFuncRoleNameGuid": { + "defaultValue": "ce6ca916-08e9-4639-bfbe-9d098baf42ca", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "serviceBusSendFuncRoleNameGuid": { + "defaultValue": "960365a2-c7bf-4ff3-8887-efa86fe4a163", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "serviceBusDataFuncRoleNameGuid": { + "defaultValue": "d42703bc-421d-4d98-bc4d-cd2bb16e5b0a", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "storageAccountWebAppRoleNameGuid": { + "defaultValue": "edd0cc48-2cf7-490e-99e8-131311e42030", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "storageAccountPrepFuncRoleNameGuid": { + "defaultValue": "9332a9e9-93f4-48d9-8121-d279f30a732e", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + }, + "storageAccountDataFuncRoleNameGuid": { + "defaultValue": "5b67af51-4a98-47e1-9d22-745069f51a13", + "minLength": 1, + "type": "String", + "metadata": { + "description": "A GUID used to identify the role assignment. This is Default value." + } + } + }, + "variables": { + "botName": "[parameters('baseResourceName')]", + "authorBotName": "[concat(parameters('baseResourceName'), '-author')]", + "botAppName": "[parameters('baseResourceName')]", + "botAppDomain": "[concat(variables('botAppName'), '.azurewebsites.net')]", + "botAppUrl": "[concat('https://', variables('botAppDomain'))]", + "hostingPlanName": "[parameters('baseResourceName')]", + "storageAccountName": "[uniquestring(concat(resourceGroup().id, parameters('baseResourceName')))]", + "appInsightsName": "[parameters('baseResourceName')]", + "prepFunctionAppName": "[concat(parameters('baseResourceName'), '-prep-function')]", + "sendFunctionAppName": "[concat(parameters('baseResourceName'), '-function')]", + "dataFunctionAppName": "[concat(parameters('baseResourceName'), '-data-function')]", + "serviceBusNamespaceName": "[parameters('baseResourceName')]", + "serviceBusSendQueueName": "company-communicator-send", + "serviceBusDataQueueName": "company-communicator-data", + "serviceBusPrepareToSendQueueName": "company-communicator-prep", + "serviceBusExportQueueName": "company-communicator-export", + "defaultSASKeyName": "RootManageSharedAccessKey", + "authRuleResourceId": "[resourceId('Microsoft.ServiceBus/namespaces/authorizationRules', variables('serviceBusNamespaceName'), variables('defaultSASKeyName'))]", + "sharedSkus": [ + "Free", + "Shared" + ], + "isSharedPlan": "[contains(variables('sharedSkus'), parameters('hostingPlanSku'))]", + "skuFamily": "[if(equals(parameters('hostingPlanSku'), 'Shared'), 'D', take(parameters('hostingPlanSku'), 1))]", + "useFrontDoor": "[equals(parameters('customDomainOption'), 'Azure Front Door')]", + "frontDoorName": "[parameters('baseResourceName')]", + "frontDoorDomain": "[toLower(concat(variables('frontDoorName'), '.azurefd.net'))]", + "ProactivelyInstallUserApp": "[parameters('ProactivelyInstallUserApp')]", + "UserAppExternalId": "[parameters('UserAppExternalId')]", + "i18n:DefaultCulture": "[parameters('DefaultCulture')]", + "i18n:SupportedCultures": "[parameters('SupportedCultures')]", + "AzureserviceBusDataOwner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '090c5cfd-751d-490a-894a-3ce6f1109419')]", + "StorageBlobDataContributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "keyvaultName": "[concat(variables('botAppName'), 'vault')]", + "keyVaultUrl": "[concat('https://',variables('keyvaultName'), '.vault.azure.net')]", + "subscriptionTenantId": "[subscription().tenantId]", + "StorageAccountSecretName": "[concat(variables('keyVaultName'), 'StorageAccountConnectionString')]", + "ServiceBusSecretName": "[concat(variables('keyVaultName'), 'ServiceBusConnectionString')]", + "AppInsightsSecretName": "[concat(variables('keyVaultName'),'AppInsightsKey')]", + "StorageAccountSecretResourceId": "[resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "ServiceBusSecretResourceId": "[resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]", + "AppInsightsSecretResourceId": "[resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('AppInsightsSecretName'))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "[parameters('location')]", + "kind": "Storage", + "properties": { + "supportsHttpsTrafficOnly": true, + "allowBlobPublicAccess": false + }, + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.ServiceBus/namespaces", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusNamespaceName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "resources": [ + { + "type": "Queues", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusSendQueueName')]", + "dependsOn": [ + "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "enableBatchedOperations": true, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "status": "Active", + "enablePartitioning": false, + "enableExpress": false + } + }, + { + "type": "Queues", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusDataQueueName')]", + "dependsOn": [ + "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "enableBatchedOperations": true, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "status": "Active", + "enablePartitioning": false, + "enableExpress": false + } + }, + { + "type": "Queues", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusPrepareToSendQueueName')]", + "dependsOn": [ + "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "enableBatchedOperations": true, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "status": "Active", + "enablePartitioning": false, + "enableExpress": false + } + }, + { + "type": "Queues", + "apiVersion": "2017-04-01", + "name": "[variables('serviceBusExportQueueName')]", + "dependsOn": [ + "[concat('Microsoft.ServiceBus/namespaces/', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "enableBatchedOperations": true, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "status": "Active", + "enablePartitioning": false, + "enableExpress": false + } + } + ] + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2016-09-01", + "name": "[variables('hostingPlanName')]", + "location": "[parameters('location')]", + "properties": { + "name": "[variables('hostingPlanName')]", + "hostingEnvironment": "", + "numberOfWorkers": 1 + }, + "sku": { + "name": "[if(variables('isSharedPlan'), concat(variables('skuFamily'), '1'), concat(variables('skuFamily'), parameters('hostingPlanSize')))]", + "tier": "[parameters('hostingPlanSku')]", + "size": "[concat(variables('skuFamily'), parameters('hostingPlanSize'))]", + "family": "[variables('skuFamily')]", + "capacity": 0 + } + }, + { + "apiVersion": "2015-05-01", + "name": "[variables('appInsightsName')]", + "type": "Microsoft.Insights/components", + "location": "[parameters('location')]", + "tags": { + "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('botAppName'))]": "Resource" + }, + "properties": { + "Application_Type": "web", + "Request_Source": "rest" + } + }, + { + "apiVersion": "2018-07-12", + "name": "[variables('authorBotName')]", + "type": "Microsoft.BotService/botServices", + "location": "global", + "sku": { + "name": "F0" + }, + "kind": "sdk", + "properties": { + "displayName": "[concat(parameters('appDisplayName'),'-author')]", + "description": "[parameters('appDescription')]", + "iconUrl": "[parameters('appIconUrl')]", + "msaAppId": "[parameters('authorClientId')]", + "endpoint": "[concat(variables('botAppUrl'), '/api/messages/author')]", + "developerAppInsightKey": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightsName')), '2015-05-01').InstrumentationKey]" + }, + "resources": [ + { + "name": "[concat(variables('authorBotName'), '/MsTeamsChannel')]", + "type": "Microsoft.BotService/botServices/channels", + "apiVersion": "2018-07-12", + "location": "global", + "sku": { + "name": "F0" + }, + "properties": { + "channelName": "MsTeamsChannel", + "location": "global", + "properties": { + "isEnabled": true + } + }, + "dependsOn": [ + "[concat('Microsoft.BotService/botServices/', variables('authorBotName'))]" + ] + } + ] + }, + { + "apiVersion": "2018-07-12", + "name": "[variables('botName')]", + "type": "Microsoft.BotService/botServices", + "location": "global", + "sku": { + "name": "F0" + }, + "kind": "sdk", + "properties": { + "displayName": "[parameters('appDisplayName')]", + "description": "[parameters('appDescription')]", + "iconUrl": "[parameters('appIconUrl')]", + "msaAppId": "[parameters('userClientId')]", + "endpoint": "[concat(variables('botAppUrl'), '/api/messages/user')]", + "developerAppInsightKey": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightsName')), '2015-05-01').InstrumentationKey]" + }, + "resources": [ + { + "name": "[concat(variables('botName'), '/MsTeamsChannel')]", + "type": "Microsoft.BotService/botServices/channels", + "apiVersion": "2018-07-12", + "location": "global", + "sku": { + "name": "F0" + }, + "properties": { + "channelName": "MsTeamsChannel", + "location": "global", + "properties": { + "isEnabled": true + } + }, + "dependsOn": [ + "[concat('Microsoft.BotService/botServices/', variables('botName'))]" + ] + } + ] + }, + { + "apiVersion": "2016-08-01", + "type": "Microsoft.Web/sites", + "name": "[variables('botAppName')]", + "location": "[parameters('location')]", + "kind": "app", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "name": "[variables('botAppName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "enabled": true, + "reserved": false, + "clientAffinityEnabled": true, + "clientCertEnabled": false, + "hostNamesDisabled": false, + "containerSize": 0, + "dailyMemoryTimeQuota": 0, + "httpsOnly": true, + "siteConfig": { + "ftpsState": "Disabled", + "alwaysOn": "[not(variables('isSharedPlan'))]", + "cors": { + "supportCredentials": true, + "allowedOrigins": [ + "[concat('https://', variables('frontDoorDomain'))]" + ] + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]", + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" + ], + "resources": [ + { + "apiVersion": "2015-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]", + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]" + ], + "properties": { + "PROJECT": "Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj", + "SITE_ROLE": "app", + "i18n:DefaultCulture": "[variables('i18n:DefaultCulture')]", + "i18n:SupportedCultures": "[variables('i18n:SupportedCultures')]", + "ProactivelyInstallUserApp": "[variables('ProactivelyInstallUserApp')]", + "UserAppExternalId": "[variables('UserAppExternalId')]", + "AzureAd:TenantId": "[parameters('tenantId')]", + "AzureAd:ClientId": "[parameters('graphAppId')]", + "AzureAd:ClientSecret": "", + "AzureAd:ApplicationIdURI": "[if(variables('useFrontDoor'), concat('api://', variables('frontDoorDomain')), '')]", + "UserAppId": "[parameters('userClientId')]", + "UserAppCertName": "[parameters('userAppCertName')]", + "AuthorAppId": "[parameters('authorClientId')]", + "AuthorAppCertName": "[parameters('authorAppCertName')]", + "GraphAppId": "[parameters('graphAppId')]", + "GraphAppCertName": "[parameters('graphAppCertName')]", + "StorageAccountConnectionString": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusConnection": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('ServiceBusSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusNamespace": "[concat(variables('serviceBusNamespaceName'),'.servicebus.windows.net')]", + "StorageAccountName": "[variables('storageAccountName')]", + "UseManagedIdentity": "true", + "AllowedTenants": "[parameters('tenantId')]", + "DisableTenantFilter": "false", + "AuthorizedCreatorUpns": "[parameters('senderUPNList')]", + "UseCertificate": "true", + "DisableAuthentication": "false", + "DisableCreatorUpnCheck": "false", + "WEBSITE_LOAD_CERTIFICATES": "*", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AppInsightsSecretResourceId'), '2015-06-01').secretUriWithVersion, ')')]", + "WEBSITE_NODE_DEFAULT_VERSION": "10.15.2", + "KeyVault:Url": "[variables('keyVaultUrl')]", + "DOTNET_ADD_GLOBAL_TOOLS_TO_PATH": "false" + } + }, + { + "apiVersion": "2016-08-01", + "name": "web", + "type": "sourcecontrols", + "condition": "[not(empty(parameters('gitRepoUrl')))]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]", + "[resourceId('Microsoft.Web/sites/config', variables('botAppName'), 'appsettings')]" + ], + "properties": { + "RepoUrl": "[parameters('gitRepoUrl')]", + "branch": "[parameters('gitBranch')]", + "IsManualIntegration": true + } + } + ] + }, + { + "apiVersion": "2016-08-01", + "type": "Microsoft.Web/sites", + "name": "[variables('prepFunctionAppName')]", + "location": "[parameters('location')]", + "kind": "functionapp", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "name": "[variables('prepFunctionAppName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "hostingEnvironment": "", + "clientAffinityEnabled": false, + "httpsOnly": true, + "siteConfig": { + "ftpsState": "Disabled", + "alwaysOn": "[not(variables('isSharedPlan'))]" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]" + ], + "resources": [ + { + "apiVersion": "2015-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]", + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]" + ], + "properties": { + "PROJECT": "Source\\CompanyCommunicator.Prep.Func\\Microsoft.Teams.Apps.CompanyCommunicator.Prep.Func.csproj", + "SITE_ROLE": "function", + "i18n:DefaultCulture": "[variables('i18n:DefaultCulture')]", + "i18n:SupportedCultures": "[variables('i18n:SupportedCultures')]", + "ProactivelyInstallUserApp": "[variables('ProactivelyInstallUserApp')]", + "UserAppExternalId": "[variables('UserAppExternalId')]", + "TenantId": "[parameters('tenantId')]", + "UserAppId": "[parameters('userClientId')]", + "UserAppCertName": "[parameters('userAppCertName')]", + "AuthorAppId": "[parameters('authorClientId')]", + "AuthorAppCertName": "[parameters('authorAppCertName')]", + "GraphAppId": "[parameters('graphAppId')]", + "GraphAppCertName": "[parameters('graphAppCertName')]", + "StorageAccountConnectionString": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusConnection": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('ServiceBusSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusNamespace": "[concat(variables('serviceBusNamespaceName'),'.servicebus.windows.net')]", + "StorageAccountName": "[variables('storageAccountName')]", + "UseManagedIdentity": "true", + "UseCertificate": "true", + "WEBSITE_LOAD_CERTIFICATES": "*", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AppInsightsSecretResourceId'), '2015-06-01').secretUriWithVersion, ')')]", + "KeyVault:Url": "[variables('keyVaultUrl')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "AzureWebJobsDashboard": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "FUNCTIONS_WORKER_RUNTIME": "dotnet", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "WEBSITE_CONTENTSHARE": "[toLower(variables('prepFunctionAppName'))]", + "AzureFunctionsJobHost__extensions__durableTask__maxConcurrentOrchestratorFunctions": "3", + "AzureFunctionsJobHost__extensions__durableTask__maxConcurrentActivityFunctions": "10", + "DOTNET_ADD_GLOBAL_TOOLS_TO_PATH": "false", + "WEBSITE_NODE_DEFAULT_VERSION": "10.15.2" + } + }, + { + "apiVersion": "2015-08-01", + "name": "web", + "type": "sourcecontrols", + "condition": "[not(empty(parameters('gitRepoUrl')))]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites/config', variables('prepFunctionAppName'), 'appsettings')]" + ], + "properties": { + "RepoUrl": "[parameters('gitRepoUrl')]", + "branch": "[parameters('gitBranch')]", + "IsManualIntegration": true + } + } + ] + }, + { + "apiVersion": "2016-08-01", + "type": "Microsoft.Web/sites", + "name": "[variables('sendFunctionAppName')]", + "location": "[parameters('location')]", + "kind": "functionapp", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "name": "[variables('sendFunctionAppName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "hostingEnvironment": "", + "clientAffinityEnabled": false, + "httpsOnly": true, + "siteConfig": { + "ftpsState": "Disabled", + "alwaysOn": "[not(variables('isSharedPlan'))]" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]" + ], + "resources": [ + { + "apiVersion": "2015-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]", + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]" + ], + "properties": { + "PROJECT": "Source\\CompanyCommunicator.Send.Func\\Microsoft.Teams.Apps.CompanyCommunicator.Send.Func.csproj", + "SITE_ROLE": "function", + "i18n:DefaultCulture": "[variables('i18n:DefaultCulture')]", + "i18n:SupportedCultures": "[variables('i18n:SupportedCultures')]", + "ProactivelyInstallUserApp": "[variables('ProactivelyInstallUserApp')]", + "UserAppId": "[parameters('userClientId')]", + "UserAppCertName": "[parameters('userAppCertName')]", + "AuthorAppId": "[parameters('authorClientId')]", + "AuthorAppCertName": "[parameters('authorAppCertName')]", + "GraphAppId": "[parameters('graphAppId')]", + "GraphAppCertName": "[parameters('graphAppCertName')]", + "StorageAccountConnectionString": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusConnection": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('ServiceBusSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusNamespace": "[concat(variables('serviceBusNamespaceName'),'.servicebus.windows.net')]", + "StorageAccountName": "[variables('storageAccountName')]", + "UseManagedIdentity": "true", + "UseCertificate": "true", + "WEBSITE_LOAD_CERTIFICATES": "*", + "MaxNumberOfAttempts": "5", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AppInsightsSecretResourceId'), '2015-06-01').secretUriWithVersion, ')')]", + "KeyVault:Url": "[variables('keyVaultUrl')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "AzureWebJobsDashboard": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "FUNCTIONS_WORKER_RUNTIME": "dotnet", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "WEBSITE_CONTENTSHARE": "[toLower(variables('sendFunctionAppName'))]", + "DOTNET_ADD_GLOBAL_TOOLS_TO_PATH": "false", + "WEBSITE_NODE_DEFAULT_VERSION": "10.15.2" + } + }, + { + "apiVersion": "2015-08-01", + "name": "web", + "type": "sourcecontrols", + "condition": "[not(empty(parameters('gitRepoUrl')))]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites/config', variables('sendFunctionAppName'), 'appsettings')]" + ], + "properties": { + "RepoUrl": "[parameters('gitRepoUrl')]", + "branch": "[parameters('gitBranch')]", + "IsManualIntegration": true + } + } + ] + }, + { + "apiVersion": "2016-08-01", + "type": "Microsoft.Web/sites", + "name": "[variables('dataFunctionAppName')]", + "location": "[parameters('location')]", + "kind": "functionapp", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "name": "[variables('dataFunctionAppName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "hostingEnvironment": "", + "clientAffinityEnabled": false, + "httpsOnly": true, + "siteConfig": { + "ftpsState": "Disabled", + "alwaysOn": "[not(variables('isSharedPlan'))]" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]" + ], + "resources": [ + { + "apiVersion": "2015-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]", + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('StorageAccountSecretName'))]", + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('ServiceBusSecretName'))]" + ], + "properties": { + "PROJECT": "Source\\CompanyCommunicator.Data.Func\\Microsoft.Teams.Apps.CompanyCommunicator.Data.Func.csproj", + "SITE_ROLE": "function", + "i18n:DefaultCulture": "[variables('i18n:DefaultCulture')]", + "i18n:SupportedCultures": "[variables('i18n:SupportedCultures')]", + "ProactivelyInstallUserApp": "[variables('ProactivelyInstallUserApp')]", + "UserAppId": "[parameters('userClientId')]", + "UserAppCertName": "[parameters('userAppCertName')]", + "AuthorAppId": "[parameters('authorClientId')]", + "AuthorAppCertName": "[parameters('authorAppCertName')]", + "GraphAppId": "[parameters('graphAppId')]", + "GraphAppCertName": "[parameters('graphAppCertName')]", + "StorageAccountConnectionString": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusConnection": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('ServiceBusSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "ServiceBusNamespace": "[concat(variables('serviceBusNamespaceName'),'.servicebus.windows.net')]", + "StorageAccountName": "[variables('storageAccountName')]", + "UseManagedIdentity": "true", + "UseCertificate": "true", + "WEBSITE_LOAD_CERTIFICATES": "*", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('AppInsightsSecretResourceId'), '2015-06-01').secretUriWithVersion, ')')]", + "KeyVault:Url": "[variables('keyVaultUrl')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "AzureWebJobsDashboard": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('StorageAccountSecretResourceId'),'2015-06-01').secretUriWithVersion, ')')]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "FUNCTIONS_WORKER_RUNTIME": "dotnet", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "WEBSITE_CONTENTSHARE": "[toLower(variables('dataFunctionAppName'))]", + "CleanUpScheduleTriggerTime": "30 23 * * *", + "CleanUpFile": "1", + "DOTNET_ADD_GLOBAL_TOOLS_TO_PATH": "false", + "WEBSITE_NODE_DEFAULT_VERSION": "10.15.2" + } + }, + { + "apiVersion": "2015-08-01", + "name": "web", + "type": "sourcecontrols", + "condition": "[not(empty(parameters('gitRepoUrl')))]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites/config', variables('dataFunctionAppName'), 'appsettings')]" + ], + "properties": { + "RepoUrl": "[parameters('gitRepoUrl')]", + "branch": "[parameters('gitBranch')]", + "IsManualIntegration": true + } + } + ] + }, + { + "type": "Microsoft.KeyVault/vaults", + "name": "[variables('keyvaultName')]", + "apiVersion": "2016-10-01", + "location": "[parameters('location')]", + "tags": { + "displayName": "KeyVault" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]", + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]", + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" + ], + "properties": { + "tenantId": "[variables('subscriptionTenantId')]", + "accessPolicies": [ + { + "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('botAppName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[reference(concat('Microsoft.Web/sites/', variables('botAppName')), '2018-02-01', 'Full').identity.principalId]", + "permissions": { + "keys": [], + "secrets": [ + "Get", + "Set", + "Restore" + ], + "certificates": [ + "Get" + ] + } + }, + { + "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('prepFunctionAppName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[reference(concat('Microsoft.Web/sites/', variables('prepFunctionAppName')), '2018-02-01', 'Full').identity.principalId]", + "permissions": { + "keys": [], + "secrets": [ + "Get" + ], + "certificates": [ + "Get" + ] + } + }, + { + "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('sendFunctionAppName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[reference(concat('Microsoft.Web/sites/', variables('sendFunctionAppName')), '2018-02-01', 'Full').identity.principalId]", + "permissions": { + "keys": [], + "secrets": [ + "Get" + ], + "certificates": [ + "Get" + ] + } + }, + { + "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('dataFunctionAppName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[reference(concat('Microsoft.Web/sites/', variables('dataFunctionAppName')), '2018-02-01', 'Full').identity.principalId]", + "permissions": { + "keys": [], + "secrets": [ + "Get" + ], + "certificates": [ + "Get" + ] + } + }, + { + "tenantId": "[reference(concat('Microsoft.Web/sites/', variables('botAppName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[parameters('objectId')]", + "permissions": { + "certificates": [ "get", "list", "create", "update" ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + } + }, + "resources": [ + { + "type": "secrets", + "apiVersion": "2016-10-01", + "name": "[variables('StorageAccountSecretName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1)]", + "attributes": { + "enabled": true + } + } + }, + { + "type": "secrets", + "apiVersion": "2016-10-01", + "name": "[variables('ServiceBusSecretName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]" + ], + "properties": { + "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryConnectionString]", + "attributes": { + "enabled": true + } + } + }, + { + "type": "secrets", + "name": "[variables('AppInsightsSecretName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-02-14", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", + "[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]" + ], + "properties": { + "value": "[reference(resourceId('Microsoft.Insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]", + "attributes": { + "enabled": true + } + } + } + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('ServiceBusWebAppRoleNameGuid')]", + "scope": "[concat('Microsoft.ServiceBus/namespaces', '/', variables('serviceBusNamespaceName'))]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('AzureserviceBusDataOwner')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('botAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('ServiceBusPrepFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.ServiceBus/namespaces', '/', variables('serviceBusNamespaceName'))]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('AzureserviceBusDataOwner')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('prepFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('ServiceBusSendFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.ServiceBus/namespaces', '/', variables('serviceBusNamespaceName'))]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('sendFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('AzureserviceBusDataOwner')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('sendFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('ServiceBusDataFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.ServiceBus/namespaces', '/', variables('serviceBusNamespaceName'))]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('AzureserviceBusDataOwner')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('dataFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('StorageAccountWebAppRoleNameGuid')]", + "scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageAccountName'))]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('StorageBlobDataContributor')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('botAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('StorageAccountPrepFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageAccountName'))]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Web/sites', variables('prepFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('StorageBlobDataContributor')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('prepFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[parameters('StorageAccountDataFuncRoleNameGuid')]", + "scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageAccountName'))]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Web/sites', variables('dataFunctionAppName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('StorageBlobDataContributor')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('dataFunctionAppName')), '2019-08-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/frontDoors", + "name": "[variables('frontDoorName')]", + "condition": "[variables('useFrontDoor')]", + "location": "Global", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('botAppName'))]" + ], + "properties": { + "backendPools": [ + { + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "[variables('botAppDomain')]", + "backendHostHeader": "[variables('botAppDomain')]", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "weight": 50, + "enabledState": "Enabled" + } + ], + "healthProbeSettings": { + "id": "[resourceId('Microsoft.Network/frontDoors/healthProbeSettings', variables('frontDoorName'), 'healthProbeSettings1')]" + }, + "loadBalancingSettings": { + "id": "[resourceId('Microsoft.Network/frontDoors/loadBalancingSettings', variables('frontDoorName'), 'loadBalancingSettings1')]" + }, + "resourceState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "intervalInSeconds": 255, + "path": "/health", + "protocol": "Https", + "resourceState": "Enabled" + } + } + ], + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "properties": { + "hostName": "[variables('frontDoorDomain')]", + "sessionAffinityEnabledState": "Disabled", + "sessionAffinityTtlSeconds": 0 + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "additionalLatencyMilliseconds": 0, + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "routingRules": [ + { + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "[resourceId('Microsoft.Network/frontDoors/frontendEndpoints', variables('frontDoorName'), 'frontendEndpoint1')]" + } + ], + "acceptedProtocols": [ + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "HttpsOnly", + "backendPool": { + "id": "[resourceId('Microsoft.Network/frontDoors/backendPools', variables('frontDoorName'), 'backendPool1')]" + } + }, + "enabledState": "Enabled" + } + }, + { + "name": "routingRule2", + "properties": { + "frontendEndpoints": [ + { + "id": "[resourceId('Microsoft.Network/frontDoors/frontendEndpoints', variables('frontDoorName'), 'frontendEndpoint1')]" + } + ], + "acceptedProtocols": [ + "Https" + ], + "patternsToMatch": [ + "/api/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "customFragment": null, + "customHost": "[variables('botAppDomain')]", + "customPath": "", + "redirectProtocol": "HttpsOnly", + "customQueryString": null, + "redirectType": "PermanentRedirect" + }, + "enabledState": "Enabled" + } + } + ], + "enabledState": "Enabled", + "friendlyName": "[variables('frontDoorName')]" + } + } + ], + "outputs": { + "keyVaultName": { + "type": "string", + "value": "[variables('keyvaultName')]" + }, + "authorBotId": { + "type": "string", + "value": "[parameters('authorClientId')]" + }, + "userBotId": { + "type": "string", + "value": "[parameters('userClientId')]" + }, + "appDomain": { + "type": "string", + "value": "[if(variables('useFrontDoor'), variables('frontDoorDomain'), concat('Please create a custom domain name for ', variables('botAppDomain'), ' and use that in the manifest'))]" + } + } +} \ No newline at end of file diff --git a/Deployment/deploy.ps1 b/Deployment/deploy.ps1 index 0ef2ec427..09c1dd668 100644 --- a/Deployment/deploy.ps1 +++ b/Deployment/deploy.ps1 @@ -268,13 +268,25 @@ function GetAzureADApp { return $app } +# To get the Azure AD app detail with new secret. +function GetAzureADAppWithSecret { + param ($appName) + $app = GetAzureADApp $appName + + #Reset the app credentials to get the secret. The default validity of this secret will be for 1 year from the date its created. + WriteI -message "Retreiving new app with secrets..." + $appSecret = az ad app credential reset --id $app.appId --append | ConvertFrom-Json; + + return $appSecret +} + # Create/re-set Azure AD app. function CreateAzureADApp { param( [Parameter(Mandatory = $true)] [string] $AppName, + [Parameter(Mandatory = $false)] [bool] $ResetAppSecret = $true, [Parameter(Mandatory = $false)] [bool] $MultiTenant = $true, - [Parameter(Mandatory = $false)] [bool] $AllowImplicitFlow, - [Parameter(Mandatory = $false)] [bool] $ResetAppSecret = $true + [Parameter(Mandatory = $false)] [bool] $AllowImplicitFlow ) try { @@ -343,7 +355,13 @@ function CollectARMDeploymentLogs { $logsFolder = New-Item -ItemType Directory -Force -Path $logsPath + if($parameters.useCertificate.value) + { + az deployment operation group list --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --name azuredeploywithcert --query "[?properties.provisioningState=='Failed'].properties.statusMessage.error" | Set-Content $deploymentLogPath + } + else{ az deployment operation group list --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --name azuredeploy --query "[?properties.provisioningState=='Failed'].properties.statusMessage.error" | Set-Content $deploymentLogPath + } $activityLog = $null $retryCount = 5 @@ -387,7 +405,13 @@ function CollectARMDeploymentLogs { } function IsSourceControlTimeOut { + $failedResourcesList = $null + if($parameters.useCertificate.Value){ + $failedResourcesList = az deployment operation group list --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --name azuredeploywithcert --query "[?properties.provisioningState=='Failed']" | ConvertFrom-Json + } + else{ $failedResourcesList = az deployment operation group list --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --name azuredeploy --query "[?properties.provisioningState=='Failed']" | ConvertFrom-Json + } $nonCodeSyncErrors = $failedResourcesList | Where-Object {($null -ne $_.properties.targetResource -and 'Microsoft.Web/sites/sourcecontrols' -ne $_.properties.targetResource.resourceType)} return (0 -ne $failedResourcesList.length -and 0 -eq $nonCodeSyncErrors.length) } @@ -427,10 +451,12 @@ function WaitForCodeDeploymentSync { function DeployARMTemplate { Param( + [Parameter(Mandatory = $true)] $graphappid, [Parameter(Mandatory = $true)] $authorappId, - [Parameter(Mandatory = $true)] $authorsecret, [Parameter(Mandatory = $true)] $userappId, - [Parameter(Mandatory = $true)] $usersecret + [Parameter(Mandatory = $false)] $graphappsecret, + [Parameter(Mandatory = $false)] $authorsecret, + [Parameter(Mandatory = $false)] $usersecret ) try { if ((az group exists --name $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value) -eq $false) { @@ -469,7 +495,12 @@ function DeployARMTemplate { # Deploy ARM templates WriteI -message "`nDeploying app services, Azure function, bot service, and other supporting resources... (this step can take over an hour)" - $armDeploymentResult = az deployment group create --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --template-file 'azuredeploy.json' --parameters "baseResourceName=$($parameters.baseResourceName.Value)" "authorClientId=$authorappId" "authorClientSecret=$authorsecret" "userClientId=$userappId" "userClientSecret=$usersecret" "senderUPNList=$($parameters.senderUPNList.Value)" "customDomainOption=$($parameters.customDomainOption.Value)" "appDisplayName=$($parameters.appDisplayName.Value)" "appDescription=$($parameters.appDescription.Value)" "appIconUrl=$($parameters.appIconUrl.Value)" "tenantId=$($parameters.tenantId.Value)" "hostingPlanSku=$($parameters.hostingPlanSku.Value)" "hostingPlanSize=$($parameters.hostingPlanSize.Value)" "location=$($parameters.region.Value)" "gitRepoUrl=$($parameters.gitRepoUrl.Value)" "gitBranch=$($parameters.gitBranch.Value)" "ProactivelyInstallUserApp=$($parameters.proactivelyInstallUserApp.Value)" "UserAppExternalId=$($parameters.userAppExternalId.Value)" "DefaultCulture=$($parameters.defaultCulture.Value)" "SupportedCultures=$($parameters.supportedCultures.Value)" + if($parameters.useCertificate.Value){ + $armDeploymentResult = az deployment group create --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --template-file 'azuredeploywithcert.json' --parameters "baseResourceName=$($parameters.baseResourceName.Value)" "authorClientId=$authorappId" "authorAppCertName=$($parameters.authorAppCertName.Value)" "graphAppId=$graphappid" "graphAppCertName=$($parameters.graphAppCertName.Value)" "userClientId=$userappId" "userAppCertName=$($parameters.userAppCertName.Value)" "senderUPNList=$($parameters.senderUPNList.Value)" "customDomainOption=$($parameters.customDomainOption.Value)" "appDisplayName=$($parameters.appDisplayName.Value)" "appDescription=$($parameters.appDescription.Value)" "appIconUrl=$($parameters.appIconUrl.Value)" "tenantId=$($parameters.tenantId.Value)" "hostingPlanSku=$($parameters.hostingPlanSku.Value)" "hostingPlanSize=$($parameters.hostingPlanSize.Value)" "location=$($parameters.region.Value)" "gitRepoUrl=$($parameters.gitRepoUrl.Value)" "gitBranch=$($parameters.gitBranch.Value)" "ProactivelyInstallUserApp=$($parameters.proactivelyInstallUserApp.Value)" "objectId=$($parameters.UserObjectId.Value)" "UserAppExternalId=$($parameters.userAppExternalId.Value)" "DefaultCulture=$($parameters.defaultCulture.Value)" "SupportedCultures=$($parameters.supportedCultures.Value)" "serviceBusWebAppRoleNameGuid=$($parameters.serviceBusWebAppRoleNameGuid.Value)" "serviceBusPrepFuncRoleNameGuid=$($parameters.serviceBusPrepFuncRoleNameGuid.Value)" "serviceBusSendFuncRoleNameGuid=$($parameters.serviceBusSendFuncRoleNameGuid.Value)" "serviceBusDataFuncRoleNameGuid=$($parameters.serviceBusDataFuncRoleNameGuid.Value)" "storageAccountWebAppRoleNameGuid=$($parameters.storageAccountWebAppRoleNameGuid.Value)" "storageAccountPrepFuncRoleNameGuid=$($parameters.storageAccountPrepFuncRoleNameGuid.Value)" "storageAccountDataFuncRoleNameGuid=$($parameters.storageAccountDataFuncRoleNameGuid.Value)" + } + else{ + $armDeploymentResult = az deployment group create --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --template-file 'azuredeploy.json' --parameters "baseResourceName=$($parameters.baseResourceName.Value)" "authorClientId=$authorappId" "authorClientSecret=$authorsecret" "graphAppId=$graphappid" "graphAppSecret=$graphappsecret" "userClientId=$userappId" "userClientSecret=$usersecret" "senderUPNList=$($parameters.senderUPNList.Value)" "customDomainOption=$($parameters.customDomainOption.Value)" "appDisplayName=$($parameters.appDisplayName.Value)" "appDescription=$($parameters.appDescription.Value)" "appIconUrl=$($parameters.appIconUrl.Value)" "tenantId=$($parameters.tenantId.Value)" "hostingPlanSku=$($parameters.hostingPlanSku.Value)" "hostingPlanSize=$($parameters.hostingPlanSize.Value)" "location=$($parameters.region.Value)" "gitRepoUrl=$($parameters.gitRepoUrl.Value)" "gitBranch=$($parameters.gitBranch.Value)" "ProactivelyInstallUserApp=$($parameters.proactivelyInstallUserApp.Value)" "UserAppExternalId=$($parameters.userAppExternalId.Value)" "DefaultCulture=$($parameters.defaultCulture.Value)" "SupportedCultures=$($parameters.supportedCultures.Value)" "serviceBusWebAppRoleNameGuid=$($parameters.serviceBusWebAppRoleNameGuid.Value)" "serviceBusPrepFuncRoleNameGuid=$($parameters.serviceBusPrepFuncRoleNameGuid.Value)" "serviceBusSendFuncRoleNameGuid=$($parameters.serviceBusSendFuncRoleNameGuid.Value)" "serviceBusDataFuncRoleNameGuid=$($parameters.serviceBusDataFuncRoleNameGuid.Value)" "storageAccountWebAppRoleNameGuid=$($parameters.storageAccountWebAppRoleNameGuid.Value)" "storageAccountPrepFuncRoleNameGuid=$($parameters.storageAccountPrepFuncRoleNameGuid.Value)" "storageAccountDataFuncRoleNameGuid=$($parameters.storageAccountDataFuncRoleNameGuid.Value)" + } $deploymentExceptionMessage = "ERROR: ARM template deployment error." if ($LASTEXITCODE -ne 0) { @@ -484,7 +515,12 @@ function DeployARMTemplate { if($appserviceCodeSyncSuccess){ WriteI -message "Re-running deployment to fetch output..." - $armDeploymentResult = az deployment group create --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --template-file 'azuredeploy.json' --parameters "baseResourceName=$($parameters.baseResourceName.Value)" "authorClientId=$authorappId" "authorClientSecret=$authorsecret" "userClientId=$userappId" "userClientSecret=$usersecret" "senderUPNList=$($parameters.senderUPNList.Value)" "customDomainOption=$($parameters.customDomainOption.Value)" "appDisplayName=$($parameters.appDisplayName.Value)" "appDescription=$($parameters.appDescription.Value)" "appIconUrl=$($parameters.appIconUrl.Value)" "tenantId=$($parameters.tenantId.Value)" "hostingPlanSku=$($parameters.hostingPlanSku.Value)" "hostingPlanSize=$($parameters.hostingPlanSize.Value)" "location=$($parameters.region.Value)" "gitRepoUrl=$($parameters.gitRepoUrl.Value)" "gitBranch=$($parameters.gitBranch.Value)" "ProactivelyInstallUserApp=$($parameters.proactivelyInstallUserApp.Value)" "UserAppExternalId=$($parameters.userAppExternalId.Value)" "DefaultCulture=$($parameters.defaultCulture.Value)" "SupportedCultures=$($parameters.supportedCultures.Value)" + if($parameters.useCertificate.Value){ + $armDeploymentResult = az deployment group create --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --template-file 'azuredeploywithcert.json' --parameters "baseResourceName=$($parameters.baseResourceName.Value)" "authorClientId=$authorappId" "authorAppCertName=$($parameters.authorAppCertName.Value)" "graphAppId=$graphappid" "graphAppCertName=$($parameters.graphAppCertName.Value)" "userClientId=$userappId" "userAppCertName=$($parameters.userAppCertName.Value)" "senderUPNList=$($parameters.senderUPNList.Value)" "customDomainOption=$($parameters.customDomainOption.Value)" "appDisplayName=$($parameters.appDisplayName.Value)" "appDescription=$($parameters.appDescription.Value)" "appIconUrl=$($parameters.appIconUrl.Value)" "tenantId=$($parameters.tenantId.Value)" "hostingPlanSku=$($parameters.hostingPlanSku.Value)" "hostingPlanSize=$($parameters.hostingPlanSize.Value)" "location=$($parameters.region.Value)" "gitRepoUrl=$($parameters.gitRepoUrl.Value)" "gitBranch=$($parameters.gitBranch.Value)" "ProactivelyInstallUserApp=$($parameters.proactivelyInstallUserApp.Value)" "objectId=$($parameters.UserObjectId.Value)" "UserAppExternalId=$($parameters.userAppExternalId.Value)" "DefaultCulture=$($parameters.defaultCulture.Value)" "SupportedCultures=$($parameters.supportedCultures.Value)" "serviceBusWebAppRoleNameGuid=$($parameters.serviceBusWebAppRoleNameGuid.Value)" "serviceBusPrepFuncRoleNameGuid=$($parameters.serviceBusPrepFuncRoleNameGuid.Value)" "serviceBusSendFuncRoleNameGuid=$($parameters.serviceBusSendFuncRoleNameGuid.Value)" "serviceBusDataFuncRoleNameGuid=$($parameters.serviceBusDataFuncRoleNameGuid.Value)" "storageAccountWebAppRoleNameGuid=$($parameters.storageAccountWebAppRoleNameGuid.Value)" "storageAccountPrepFuncRoleNameGuid=$($parameters.storageAccountPrepFuncRoleNameGuid.Value)" "storageAccountDataFuncRoleNameGuid=$($parameters.storageAccountDataFuncRoleNameGuid.Value)" + } + else{ + $armDeploymentResult = az deployment group create --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value --template-file 'azuredeploy.json' --parameters "baseResourceName=$($parameters.baseResourceName.Value)" "authorClientId=$authorappId" "authorClientSecret=$authorsecret" "graphAppId=$graphappid" "graphAppSecret=$graphappsecret" "userClientId=$userappId" "userClientSecret=$usersecret" "senderUPNList=$($parameters.senderUPNList.Value)" "customDomainOption=$($parameters.customDomainOption.Value)" "appDisplayName=$($parameters.appDisplayName.Value)" "appDescription=$($parameters.appDescription.Value)" "appIconUrl=$($parameters.appIconUrl.Value)" "tenantId=$($parameters.tenantId.Value)" "hostingPlanSku=$($parameters.hostingPlanSku.Value)" "hostingPlanSize=$($parameters.hostingPlanSize.Value)" "location=$($parameters.region.Value)" "gitRepoUrl=$($parameters.gitRepoUrl.Value)" "gitBranch=$($parameters.gitBranch.Value)" "ProactivelyInstallUserApp=$($parameters.proactivelyInstallUserApp.Value)" "UserAppExternalId=$($parameters.userAppExternalId.Value)" "DefaultCulture=$($parameters.defaultCulture.Value)" "SupportedCultures=$($parameters.supportedCultures.Value)" "serviceBusWebAppRoleNameGuid=$($parameters.serviceBusWebAppRoleNameGuid.Value)" "serviceBusPrepFuncRoleNameGuid=$($parameters.serviceBusPrepFuncRoleNameGuid.Value)" "serviceBusSendFuncRoleNameGuid=$($parameters.serviceBusSendFuncRoleNameGuid.Value)" "serviceBusDataFuncRoleNameGuid=$($parameters.serviceBusDataFuncRoleNameGuid.Value)" "storageAccountWebAppRoleNameGuid=$($parameters.storageAccountWebAppRoleNameGuid.Value)" "storageAccountPrepFuncRoleNameGuid=$($parameters.storageAccountPrepFuncRoleNameGuid.Value)" "storageAccountDataFuncRoleNameGuid=$($parameters.storageAccountDataFuncRoleNameGuid.Value)" + } } else{ CollectARMDeploymentLogs Throw $deploymentExceptionMessage @@ -506,10 +542,18 @@ function DeployARMTemplate { } } WriteS -message "Finished deploying resources. ARM template deployment succeeded." - - #get the output of current deployment - $deploymentOutput = az deployment group show --name azuredeploy --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value | ConvertFrom-Json + #get the output of current deployment + $deploymentOutput = $null + if($parameters.useCertificate.value) + { + $deploymentOutput = az deployment group show --name azuredeploywithcert --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value | ConvertFrom-Json + } + else + { + $deploymentOutput = az deployment group show --name azuredeploy --resource-group $parameters.resourceGroupName.Value --subscription $parameters.subscriptionId.Value | ConvertFrom-Json + } + # Sync only in upgrades & if no source branch conflict detected if($parameters.isUpgrade.Value -and (-not $codeSynced)){ # sync app services code deployment (ARM deployment will not sync automatically) @@ -533,39 +577,73 @@ function DeployARMTemplate { } } -# Create Azure AD App principal if app is used in other tenants -function CreateAdAppPrincipal { +function CreateCertificateInKeyVault { Param( - [Parameter(Mandatory = $true)] $tenantId, - [Parameter(Mandatory = $true)] $authorAppId, - [Parameter(Mandatory = $true)] $userAppId + [Parameter(Mandatory= $true)] $certificateName, + [Parameter(Mandatory= $true)] $keyVaultName, + [Parameter(Mandatory= $true)] $domainName ) - WriteI -message "`nPlease login to the tenant where this app template will be used in Microsoft Teams." - $user = az login --tenant $tenantId --allow-no-subscriptions - - $sp = az ad sp list --filter "appId eq '$authorAppId'" - if (0 -eq ($sp | ConvertFrom-Json).length) { - WriteI -message "Azure AD app principal will be created in tenant: $tenantId" - - # Delete old service principal for user app - $sp = az ad sp list --filter "appId eq '$userAppId'" - if (0 -ne ($sp | ConvertFrom-Json).length) { - $sp = az ad sp delete --id $userAppId - } - - # create new service principal - $sp = az ad sp create --id $authorAppId + #Get existing Azure Key Vault information + $azKeyVault = Get-AzKeyVault -Name $keyVaultName -ErrorAction SilentlyContinue + if ($null -eq $azKeyVault) + { + Write-Host "Didn't find Key Vault with name Azure:- $keyVaultName" -BackgroundColor DarkRed + break } - - $logOut = az logout - WriteW -message "`nPlease inform your admin to consent the app permissions from this link`nhttps://login.microsoftonline.com/$tenantId/adminconsent?client_id=$authorAppId" -} + else + { + Write-Host "Found Key Vault Name:- $keyVaultName" -BackgroundColor DarkGreen + } + #Generate new Azure Key Vault Certificate + Write-Host "Processing creation of Azure Key Vault Certificate" -ForegroundColor Yellow + $certSubjectName = 'cn=' + $domainName + $azKeyVaultCertPolicy = New-AzKeyVaultCertificatePolicy -SecretContentType "application/x-pkcs12" -SubjectName $certSubjectName -IssuerName "Self" -ValidityInMonths 24 -ReuseKeyOnRenewal + $azKeyVaultCertStatus = Add-AzKeyVaultCertificate -VaultName $keyVaultName -Name $CertificateName -CertificatePolicy $azKeyVaultCertPolicy + + #Wait for certificate to generate + $counter = 1 + While ($azKeyVaultCertStatus.Status -eq 'inProgress') { + Start-Sleep -Milliseconds 50 + Write-Host "`r$counter% creation in progress" -NoNewline -ForegroundColor Yellow + $azKeyVaultCertStatus = Get-AzKeyVaultCertificateOperation -VaultName $keyVaultName -Name $CertificateName + $counter++ + } + Write-Host "`r100% Completed. Checking status... " -ForegroundColor Yellow + if ($azKeyVaultCertStatus.Status -ne 'completed') { + Write-Host $($azKeyVaultCertStatus.StatusDetails) -ForegroundColor Magenta + } + else { + Write-Host "Generated Key Vault Certificate successfully" -BackgroundColor DarkGreen + Write-Output $azKeyVaultCertStatus + } +} + +function UpdateAadAppWithCertificate { + Param( + [Parameter(Mandatory = $true)] $appId, + [Parameter(Mandatory = $true)] $keyVaultName, + [Parameter(Mandatory = $true)] $certificateName + ) + # Update AAD app with keyvault certificate + az ad app credential reset --id $appId --keyvault $keyVaultName --cert $certificateName --append +} + +function ImportKeyVaultCertificate{ + Param( + [Parameter(Mandatory = $true)] $keyVaultName, + [Parameter(Mandatory = $true)] $appName + ) + Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd -PermissionsToSecrets get + az webapp config ssl import --resource-group $parameters.resourceGroupName.Value --name $appName --subscription $parameters.subscriptionId.Value --key-vault $keyVaultName --key-vault-certificate-name $parameters.authorAppCertName.Value + az webapp config ssl import --resource-group $parameters.resourceGroupName.Value --name $appName --subscription $parameters.subscriptionId.Value --key-vault $keyVaultName --key-vault-certificate-name $parameters.userAppCertName.Value + az webapp config ssl import --resource-group $parameters.resourceGroupName.Value --name $appName --subscription $parameters.subscriptionId.Value --key-vault $keyVaultName --key-vault-certificate-name $parameters.graphAppCertName.Value +} # Grant Admin consent function GrantAdminConsent { Param( - [Parameter(Mandatory = $true)] $authorAppId + [Parameter(Mandatory = $true)] $graphAppId ) $confirmationTitle = "Admin consent permissions is required for app registration using CLI" @@ -573,8 +651,8 @@ function GrantAdminConsent { $confirmationChoices = "&Yes", "&No" # 0 = Yes, 1 = No $consentErrorMessage = "Current user does not have the privilege to consent the below permissions on this app. * AppCatalog.Read.All(Delegated) - * Group.Read.All(Delegated) - * Group.Read.All(Application) + * GroupMember.Read.All(Delegated) + * GroupMember.Read.All(Application) * TeamsAppInstallation.ReadWriteForUser.All(Application) * User.Read.All(Delegated) * User.Read(Application) @@ -584,16 +662,16 @@ function GrantAdminConsent { if ($updateDecision -eq 0) { # Grant admin consent for app registration required permissions using CLI WriteI -message "Waiting for admin consent to finish..." - az ad app permission admin-consent --id $authorAppId + az ad app permission admin-consent --id $graphAppId if ($LASTEXITCODE -ne 0) { WriteE -message $consentErrorMessage - WriteW -message "`nPlease inform the global admin to consent the app permissions from this link`nhttps://login.microsoftonline.com/$($parameters.tenantId.value)/adminconsent?client_id=$authorAppId" + WriteW -message "`nPlease inform the global admin to consent the app permissions from this link`nhttps://login.microsoftonline.com/$($parameters.tenantId.value)/adminconsent?client_id=$graphAppId" } else { WriteS -message "Admin consent has been granted." } } else { - WriteW -message "`nPlease inform the global admin to consent the app permissions from this link`nhttps://login.microsoftonline.com/$($parameters.tenantId.value)/adminconsent?client_id=$authorAppId" + WriteW -message "`nPlease inform the global admin to consent the app permissions from this link`nhttps://login.microsoftonline.com/$($parameters.tenantId.value)/adminconsent?client_id=$graphAppId" } } @@ -608,7 +686,7 @@ function ADAppUpdate { $configAppUrl = "https://$azureDomainBase" $RedirectUris = ($configAppUrl + '/signin-simple-end') $IdentifierUris = "api://$azureDomainBase" - $appName = $parameters.baseResourceName.Value + '-authors' + $appName = $parameters.baseResourceName.Value function CreatePreAuthorizedApplication( [string] $applicationIdToPreAuthorize, @@ -637,11 +715,12 @@ function ADAppUpdate { return $scope } - # Grant Admin consent if the subscriptionTenantId and tenantId are same. - if ($parameters.tenantId.value -eq $parameters.subscriptionTenantId.value) { - GrantAdminConsent $configAppId - } + # Grant Admin consent + GrantAdminConsent $configAppId + # set subscription + az account set --subscription $parameters.subscriptionId.Value + # Assigning graph permissions az ad app update --id $configAppId --required-resource-accesses './AadAppManifest.json' @@ -661,10 +740,10 @@ function ADAppUpdate { # Do nothing if the app has already been configured if ($app.IdentifierUris.Count -gt 0) { - WriteS -message "`Author application is already configured." + WriteS -message "`Graph application is already configured." return } - WriteI -message "`nUpdating authors app..." + WriteI -message "`nUpdating graph app..." #Removing default scope user_impersonation $DEFAULT_SCOPE=$(az ad app show --id $configAppId | jq '.oauth2Permissions[0].isEnabled = false' | jq -r '.oauth2Permissions') @@ -728,13 +807,35 @@ function ADAppUpdate { WriteI -message "Teams mobile/desktop and web clients applications pre-authorized." } -# Removing existing access of user app. -function ADAppUpdateUser { - Param( - [Parameter(Mandatory = $true)] $appId +# update app name +function ADAppUpdateDisplayName{ + Param( + [Parameter(Mandatory = $true)] $appId, + [Parameter(Mandatory = $true)] $currentName, + [Parameter(Mandatory = $true)] $newName ) - $appName = $parameters.baseResourceName.Value + $apps = Get-AzureADApplication -Filter "DisplayName eq '$currentName'" + + if (0 -eq $apps.Length) { + $app = New-AzureADApplication -DisplayName $currentName + } else { + $app = $apps[0] + } + + $applicationObjectId = $app.ObjectId + + $app = Get-AzureADMSApplication -ObjectId $applicationObjectId + + az ad app update --id $appId --set DisplayName=$newName +} + +# Removing existing access of app. +function FormatAADApp { + Param( + [Parameter(Mandatory = $true)] $appId, + [Parameter(Mandatory = $true)] $appName + ) $apps = Get-AzureADApplication -Filter "DisplayName eq '$appName'" @@ -750,11 +851,11 @@ function ADAppUpdateUser { # Do nothing if the app has already been configured if ($app.IdentifierUris.Count -eq 0) { - WriteS -message "`nUser app already configured." + WriteS -message "`n app already configured." return } - WriteI -message "`nUpdating user app..." + WriteI -message "`nUpdating app..." $IdentifierUris = "api://$appId" $DEFAULT_SCOPE=$(az ad app show --id $appId | jq '.oauth2Permissions[0].isEnabled = false' | jq -r '.oauth2Permissions') @@ -921,7 +1022,7 @@ function logout { } # Start Deployment. - Write-Ascii -InputObject "Company Communicator v4" -ForegroundColor Magenta + Write-Ascii -InputObject "Company Communicator v5.0" -ForegroundColor Magenta WriteI -message "Starting deployment..." # Initialize connections - Azure Az/CLI/Azure AD @@ -944,51 +1045,130 @@ function logout { logout EXIT } - -# Create User App - $userAppCred = CreateAzureADApp $parameters.baseresourcename.Value - if ($null -eq $userAppCred) { - WriteE -message "Failed to create or update User app in Azure Active Directory. Exiting..." - logout - Exit - } - + +# Create or Update User App + $usersApp = $parameters.baseresourcename.Value + '-users' + $userAppCred = $null + + if($parameters.isUpgrade.Value){ + $currentAppName = $parameters.baseresourcename.Value + $userAppCred = GetAzureADAppWithSecret $currentAppName + ADAppUpdateDisplayName $userAppCred.appId $currentAppName $usersApp + } + else + { + $userAppCred = CreateAzureADApp $usersApp + if ($null -eq $userAppCred) { + WriteE -message "Failed to create or update User app in Azure Active Directory. Exiting..." + logout + Exit + } + } + # Create Author App $authorsApp = $parameters.baseResourceName.Value + '-authors' - $authorAppCred = CreateAzureADApp $authorsApp - if ($null -eq $authorAppCred) { + $authorAppCred = $null + if($parameters.isUpgrade.Value){ + $authorAppCred = GetAzureADAppWithSecret $authorsApp + } + else + { + $authorAppCred = CreateAzureADApp $authorsApp + if ($null -eq $authorAppCred) { WriteE -message "Failed to create or update the Author app in Azure Active Directory. Exiting..." logout Exit - } + } + } + +# Create Company Communicator App + $graphApp = $parameters.baseResourceName.Value + $graphAppCred = CreateAzureADApp -AppName $graphApp -ResetAppSecret $True -MultiTenant $False + if ($null -eq $graphAppCred) { + WriteE -message "Failed to create or update the main app in Azure Active Directory. Exiting..." + logout + Exit + } # Function call to Deploy ARM Template - $deploymentOutput = DeployARMTemplate $authorAppCred.appId $authorAppCred.password $userAppCred.appId $userAppCred.password + $deploymentOutput = $null + $appDisplayName = $null + if($parameters.useCertificate.Value){ + $deploymentOutput = DeployARMTemplate $graphAppCred.appId $authorAppCred.appId $userAppCred.appId + + # Reading the deployment output. + WriteI -message "Reading deployment outputs..." + if(($null -eq $deploymentOutput) -or ( $null -eq $deploymentOutput.properties) -or ($null -eq $deploymentOutput.properties.Outputs) -or ($deploymentOutput.properties.Outputs.keyVaultName) -or ($deploymentOutput.properties.Outputs.keyVaultName.Value)) + { + $keyVaultName = $parameters.BaseResourceName.Value + 'vault' + if($parameters.customDomainOption.Value -eq 'Azure Front Door') + { + $appdomainName = $parameters.BaseResourceName.Value.ToLower() + '.azurefd.net' + } + else + { + $appdomainName = 'Please create a custom domain name for ' + $parameters.BaseResourceName.Value + ' and use that in the manifest' + } + } + else + { + $keyVaultName = $deploymentOutput.properties.Outputs.keyVaultName.Value + $appdomainName = $deploymentOutput.properties.Outputs.appDomain.Value + } + + CreateCertificateInKeyVault $parameters.authorAppCertName.value $keyVaultName $appdomainName + CreateCertificateInKeyVault $parameters.userAppCertName.value $keyVaultName $appdomainName + CreateCertificateInKeyVault $parameters.graphAppCertName.value $keyVaultName $appdomainName + + ImportKeyVaultCertificate $keyVaultName $parameters.BaseResourceName.Value + ImportKeyVaultCertificate $keyVaultName "$($parameters.BaseResourceName.Value)-prep-function" + ImportKeyVaultCertificate $keyVaultName "$($parameters.BaseResourceName.Value)-function" + ImportKeyVaultCertificate $keyVaultName "$($parameters.BaseResourceName.Value)-data-function" + + UpdateAadAppWithCertificate $authorAppCred.appId $keyVaultName $parameters.authorAppCertName.value + UpdateAadAppWithCertificate $userAppCred.appId $keyVaultName $parameters.userAppCertName.value + UpdateAadAppWithCertificate $graphAppCred.appId $keyVaultName $parameters.graphAppCertName.value + } + else + { + $deploymentOutput = DeployARMTemplate $graphAppCred.appId $authorAppCred.appId $userAppCred.appId $graphAppCred.password $authorAppCred.password $userAppCred.password + + # Reading the deployment output. + WriteI -message "Reading deployment outputs..." + if(($null -eq $deploymentOutput) -or ( $null -eq $deploymentOutput.properties) -or ($null -eq $deploymentOutput.properties.Outputs) -or ($deploymentOutput.properties.Outputs.keyVaultName) -or ($deploymentOutput.properties.Outputs.keyVaultName.Value)) + { + $keyVaultName = $parameters.BaseResourceName.Value + 'vault' + if($parameters.customDomainOption.Value -eq 'Azure Front Door') + { + $appdomainName = $parameters.BaseResourceName.Value.ToLower() + '.azurefd.net' + } + else + { + $appdomainName = 'Please create a custom domain name for ' + $parameters.BaseResourceName.Value + ' and use that in the manifest' + } + } + else + { + # Assigning return values to variable. + $appdomainName = $deploymentOutput.properties.Outputs.appDomain.Value + } + } if ($null -eq $deploymentOutput) { WriteE -message "Encountered an error during ARM template deployment. Exiting..." logout Exit - } - -# Reading the deployment output. - WriteI -message "Reading deployment outputs..." - -# Assigning return values to variable. - $appdomainName = $deploymentOutput.properties.Outputs.appDomain.Value + } # Function call to update reply-urls and uris for registered app. WriteI -message "Updating required parameters and urls..." - ADAppUpdateUser $userAppCred.appId - ADAppUpdate $appdomainName $authorAppCred.appId + if($parameters.isUpgrade.Value){ + FormatAADApp $authorAppCred.appId $authorsApp + } + ADAppUpdate $appdomainName $graphAppCred.appId # Log out to avoid tokens caching logout -# App template is deployed on tenant A and used in tenant B - if ($parameters.tenantId.Value -ne $parameters.subscriptionTenantId.Value){ - CreateAdAppPrincipal $parameters.tenantId.Value $authorAppCred.appId $userAppCred.appId - } - # Function call to generate manifest.zip folder for User and Author. GenerateAppManifestPackage 'authors' $appdomainName $authorAppCred.appId GenerateAppManifestPackage 'users' $appdomainName $userAppCred.appId diff --git a/Deployment/parameters.json b/Deployment/parameters.json index b43fe58f3..7b2f73eca 100644 --- a/Deployment/parameters.json +++ b/Deployment/parameters.json @@ -7,6 +7,10 @@ "Value": "<>", "Description": "Id of the tenant to deploy to (If you are not sure how to get Tenant ID, please check Azure Active Directory in Azure Portal. Under Manage, click Properties. The tenant ID is shown in the Directory ID box). e.g 98f3ece2-3a5a-428b-aa4f-4c41b3f6eef0. Tenant ID is also in the \"Overview\" section\"" }, + "UserObjectId": { + "Value": "<>", + "Description": "User Object Id." + }, "resourceGroupName": { "Value": "<>", "Description": "Resource Group" @@ -27,8 +31,24 @@ "Value": "<>", "Description": "Semicolon-delimited list of the user principal names (UPNs) allowed to send messages." }, + "useCertificate": { + "Value": false, + "Description": "If certificate authentication is being used, then value should be true. Otherwise, false is default (Client-secret will be used)." + }, + "authorAppCertName": { + "Value": "<>", + "Description": "The X.509 certificate name of the author bot Azure AD app." + }, + "graphAppCertName": { + "Value": "<>", + "Description": "The X.509 certificate name of the Microsoft Azure AD app." + }, + "userAppCertName": { + "Value": "<>", + "Description": "The X.509 certificate name of the user bot Azure AD app." + }, "isUpgrade": { - "Value": "false", + "Value": false, "Description": "If this is an upgrade for old version of the app template, then value should be true. Otherwise, false is default (First-time deployment)." }, "customDomainOption": { @@ -43,6 +63,34 @@ "Value": "148a66bb-e83d-425a-927d-09f4299a9274", "Description": "User app external ID." }, + "serviceBusWebAppRoleNameGuid": { + "Value": "958380b3-630d-4823-b933-f59d92cdcada", + "Description": "A GUID used to identify the role assignment. This is Default value." + }, + "serviceBusPrepFuncRoleNameGuid": { + "Value": "ce6ca916-08e9-4639-bfbe-9d098baf42ca", + "Description": "A GUID used to identify the role assignment. This is Default value." + }, + "serviceBusSendFuncRoleNameGuid": { + "Value": "960365a2-c7bf-4ff3-8887-efa86fe4a163", + "Description": "A GUID used to identify the role assignment. This is Default value." + }, + "serviceBusDataFuncRoleNameGuid": { + "Value": "d42703bc-421d-4d98-bc4d-cd2bb16e5b0a", + "Description": "A GUID used to identify the role assignment. This is Default value." + }, + "storageAccountWebAppRoleNameGuid": { + "Value": "edd0cc48-2cf7-490e-99e8-131311e42030", + "Description": "A GUID used to identify the role assignment. This is Default value." + }, + "storageAccountPrepFuncRoleNameGuid": { + "Value": "9332a9e9-93f4-48d9-8121-d279f30a732e", + "Description": "A GUID used to identify the role assignment. This is Default value." + }, + "storageAccountDataFuncRoleNameGuid": { + "Value": "5b67af51-4a98-47e1-9d22-745069f51a13", + "Description": "A GUID used to identify the role assignment. This is Default value." + }, "defaultCulture": { "Value": "en-US", "Description": "Default culture." @@ -53,10 +101,10 @@ }, "hostingPlanSku": { "Value": "Standard", - "Description": "The pricing tier for the hosting plan. Defaul value: Standard. You may choose between Basic, Standard and Premium." + "Description": "The pricing tier for the hosting plan. Default value: Standard. You may choose between Basic, Standard and Premium." }, "hostingPlanSize": { - "Value": "1", + "Value": "2", "Description": "The size of the hosting plan (small - 1, medium - 2, or large - 3). Default value: 1" }, "gitRepoUrl": { diff --git a/Manifest/manifest_authors.json b/Manifest/manifest_authors.json index f069ae919..9af81d8a7 100644 --- a/Manifest/manifest_authors.json +++ b/Manifest/manifest_authors.json @@ -1,7 +1,7 @@ { "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.5/MicrosoftTeams.schema.json", "manifestVersion": "1.5", - "version": "4.1.5", + "version": "5.0.0", "id": "1c07cd26-a088-4db8-8928-ace382fa219f", "packageName": "com.microsoft.teams.companycommunicator.authors", "developer": { diff --git a/Manifest/manifest_users.json b/Manifest/manifest_users.json index be5985a3c..f75126404 100644 --- a/Manifest/manifest_users.json +++ b/Manifest/manifest_users.json @@ -1,7 +1,7 @@ { "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.5/MicrosoftTeams.schema.json", "manifestVersion": "1.5", - "version": "4.1.5", + "version": "5.0.0", "id": "148a66bb-e83d-425a-927d-09f4299a9274", "packageName": "com.microsoft.teams.companycommunicator", "developer": { diff --git a/README.md b/README.md index 57a193849..71f868acd 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Company Communicator App Template -| [Documentation](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki) | [Deployment guide](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Deployment-guide) | [Deployment guide powershell](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Deployment-guide-powershell) | [Architecture](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Solution-overview) | -| ---- | ---- | ---- | ---- | +| [Documentation](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki) | [Deployment guide powershell](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Deployment-guide-powershell) |[Deployment guide](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Deployment-guide) | [Deployment guide certificate](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Deployment-guide-certificate) | [Architecture](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Solution-overview) | +| ---- | ---- | ---- | ---- | ---- | Company Communicator is a custom Teams app that enables corporate teams to create and send messages intended for multiple teams or large number of employees over chat allowing organization to reach employees right where they collaborate. Use this template for multiple scenarios, such as new initiative announcements, employee onboarding, modern learning and development, or organization-wide broadcasts. @@ -19,8 +19,12 @@ The app provides an easy interface for designated users to create, preview, coll Begin with the [Solution overview](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Solution-overview) to read about what the app does and how it works. When you're ready to try out Company Communicator, or to use it in your own organization, you can choose to follow one of the below guides. +* [Deployment guide powershell](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Deployment-guide-powershell). + * **Recommended** Use this option to deploy the Company Communicator using powershell script. The entire set-up is done by the powershell script. * [Deployment guide](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Deployment-guide). -* [Deployment guide powershell](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Deployment-guide-powershell). + * Use this option to deploy the Company Communicator with client secrets. +* [Deployment guide certificate](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Deployment-guide-certificate). + * Use this option to deploy the Company Communicator with certificates. ## Feedback diff --git a/Source/CompanyCommunicator.Common/Adapter/CCBotFrameworkHttpAdapter.cs b/Source/CompanyCommunicator.Common/Adapter/CCBotFrameworkHttpAdapter.cs index b1e89ba9d..dbd5a955c 100644 --- a/Source/CompanyCommunicator.Common/Adapter/CCBotFrameworkHttpAdapter.cs +++ b/Source/CompanyCommunicator.Common/Adapter/CCBotFrameworkHttpAdapter.cs @@ -5,34 +5,76 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter { + using System; using System.Threading; using System.Threading.Tasks; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Connector.Authentication; using Microsoft.Bot.Schema; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets; /// /// Bot framework http adapter instance. /// public class CCBotFrameworkHttpAdapter : BotFrameworkHttpAdapter, ICCBotFrameworkHttpAdapter { - private readonly ICredentialProvider credentialProvider; + private readonly ICertificateProvider certificateProvider; /// /// Initializes a new instance of the class. /// /// credential provider. - public CCBotFrameworkHttpAdapter(ICredentialProvider credentialProvider) + /// certificate provider. + public CCBotFrameworkHttpAdapter( + ICredentialProvider credentialProvider, + ICertificateProvider certificateProvider) : base(credentialProvider) { - this.credentialProvider = credentialProvider; + this.certificateProvider = certificateProvider; } /// - public override Task CreateConversationAsync(string channelId, string serviceUrl, MicrosoftAppCredentials credentials, ConversationParameters conversationParameters, BotCallbackHandler callback, CancellationToken cancellationToken) + public async Task CreateConversationUsingCertificateAsync(string channelId, string serviceUrl, AppCredentials appCredentials, ConversationParameters conversationParameters, BotCallbackHandler callback, CancellationToken cancellationToken) { - return base.CreateConversationAsync(channelId, serviceUrl, credentials, conversationParameters, callback, cancellationToken); + var cert = await this.certificateProvider.GetCertificateAsync(appCredentials.MicrosoftAppId); + var options = new CertificateAppCredentialsOptions() + { + AppId = appCredentials.MicrosoftAppId, + ClientCertificate = cert, + }; + + await this.CreateConversationAsync(channelId, serviceUrl, new CertificateAppCredentials(options) as AppCredentials, conversationParameters, callback, cancellationToken); + } + + /// + public async Task CreateConversationUsingSecretAsync(string channelId, string serviceUrl, MicrosoftAppCredentials credentials, ConversationParameters conversationParameters, BotCallbackHandler callback, CancellationToken cancellationToken) + { + await this.CreateConversationAsync(channelId, serviceUrl, credentials, conversationParameters, callback, cancellationToken); + } + + /// + protected override async Task BuildCredentialsAsync(string appId, string oAuthScope = null) + { + appId = appId ?? throw new ArgumentNullException(nameof(appId)); + + if (this.certificateProvider.IsCertificateAuthenticationEnabled()) + { + var cert = await this.certificateProvider.GetCertificateAsync(appId); + var options = new CertificateAppCredentialsOptions() + { + AppId = appId, + ClientCertificate = cert, + OauthScope = oAuthScope, + }; + + var certificateAppCredentials = new CertificateAppCredentials(options) as AppCredentials; + return certificateAppCredentials; + } + else + { + return await base.BuildCredentialsAsync(appId, oAuthScope); + } } } } diff --git a/Source/CompanyCommunicator.Common/Adapter/ICCBotFrameworkHttpAdapter.cs b/Source/CompanyCommunicator.Common/Adapter/ICCBotFrameworkHttpAdapter.cs index 8c9c7409e..9897f8093 100644 --- a/Source/CompanyCommunicator.Common/Adapter/ICCBotFrameworkHttpAdapter.cs +++ b/Source/CompanyCommunicator.Common/Adapter/ICCBotFrameworkHttpAdapter.cs @@ -9,16 +9,17 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter using System.Threading.Tasks; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Integration; + using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Connector.Authentication; using Microsoft.Bot.Schema; /// /// Bot Framework Http Adapter interface. /// - public interface ICCBotFrameworkHttpAdapter : IAdapterIntegration + public interface ICCBotFrameworkHttpAdapter : IAdapterIntegration, IBotFrameworkHttpAdapter { /// - /// Creates a conversation on the specified channel. + /// Creates a conversation using app secret on the specified channel. /// /// The ID for the channel. /// The channel's service URL endpoint. @@ -27,6 +28,19 @@ public interface ICCBotFrameworkHttpAdapter : IAdapterIntegration /// The method to call for the resulting bot turn. /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// A task that represents the work queued to execute. - Task CreateConversationAsync(string channelId, string serviceUrl, MicrosoftAppCredentials credentials, ConversationParameters conversationParameters, BotCallbackHandler callback, CancellationToken cancellationToken); + Task CreateConversationUsingSecretAsync(string channelId, string serviceUrl, MicrosoftAppCredentials credentials, ConversationParameters conversationParameters, BotCallbackHandler callback, CancellationToken cancellationToken); + + /// + /// Creates a conversation using app certificate on the specified channel. + /// This method can be used to use certificates for authentication. + /// + /// The ID for the channel. + /// The channel's service URL endpoint. + /// The application credentials for the bot. + /// The conversation information to use to create the conversation. + /// The method to call for the resulting bot turn. + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// A task that represents the work queued to execute. + Task CreateConversationUsingCertificateAsync(string channelId, string serviceUrl, AppCredentials appCredentials, ConversationParameters conversationParameters, BotCallbackHandler callback, CancellationToken cancellationToken); } } diff --git a/Source/CompanyCommunicator.Common/Constants.cs b/Source/CompanyCommunicator.Common/Constants.cs index 79cce3a14..ff60ede07 100644 --- a/Source/CompanyCommunicator.Common/Constants.cs +++ b/Source/CompanyCommunicator.Common/Constants.cs @@ -11,9 +11,9 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common public static class Constants { /// - /// get the group read all scope. + /// get the groupMember read all scope. /// - public const string ScopeGroupReadAll = "Group.Read.All"; + public const string ScopeGroupMemberReadAll = "GroupMember.Read.All"; /// /// AppCatalog Read All scope. diff --git a/Source/CompanyCommunicator.Common/Extensions/ServiceCollectionExtension.cs b/Source/CompanyCommunicator.Common/Extensions/ServiceCollectionExtension.cs new file mode 100644 index 000000000..7124bdecb --- /dev/null +++ b/Source/CompanyCommunicator.Common/Extensions/ServiceCollectionExtension.cs @@ -0,0 +1,123 @@ +// +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// + +namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Extensions +{ + using System; + using global::Azure.Core; + using global::Azure.Identity; + using global::Azure.Messaging.ServiceBus; + using global::Azure.Storage.Blobs; + using Microsoft.Extensions.Configuration; + using Microsoft.Extensions.DependencyInjection; + using Microsoft.Extensions.Options; + using Microsoft.Identity.Client; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot; + + /// + /// Extension class for registering resources in DI container. + /// + public static class ServiceCollectionExtension + { + /// + /// Add Blob client dependency either using Managed identity or connection string. + /// + /// Collection of services. + /// boolean to indicate to use managed identity or connection string. + public static void AddBlobClient(this IServiceCollection services, bool useManagedIdentity) + { + // Setup blob client options. + var options = new BlobClientOptions(); + + // configure retries + options.Retry.MaxRetries = 5; // default is 3 + options.Retry.Mode = RetryMode.Exponential; // default is fixed retry policy + options.Retry.Delay = TimeSpan.FromSeconds(1); // default is 0.8s + + if (useManagedIdentity) + { + // Add using managed identities. + services.AddSingleton(sp => new BlobContainerClient( + GetBlobContainerUri(sp.GetService().GetValue("StorageAccountName")), + new DefaultAzureCredential(), + options)); + } + else + { + // Add using connection strings. + services.AddSingleton(sp => new BlobContainerClient( + sp.GetService().GetValue("StorageAccountConnectionString"), + Common.Constants.BlobContainerName, + options)); + } + } + + /// + /// Add Service Bus client dependency either using Managed identity or connection string. + /// + /// Collection of services. + /// boolean to indicate to use managed identity or connection string. + public static void AddServiceBusClient(this IServiceCollection services, bool useManagedIdentity) + { + if (useManagedIdentity) + { + // Adding using managed identities. + services.AddSingleton(sp => new ServiceBusClient( + sp.GetService().GetValue("ServiceBusNamespace"), + new DefaultAzureCredential())); + } + else + { + // Adding using connection strings. + services.AddSingleton(sp => new ServiceBusClient( + sp.GetService().GetValue("ServiceBusConnection"))); + } + } + + /// + /// Add Confidential client dependency to make graph calls. + /// + /// Collection of services. + /// boolean to indicate to use certificates or credentials. + public static void AddConfidentialClient(this IServiceCollection services, bool useCertificates) + { + if (useCertificates) + { + services.AddSingleton(provider => + { + var options = provider.GetRequiredService>(); + var certificateProvider = provider.GetRequiredService(); + var cert = certificateProvider.GetCertificateAsync(options.Value.ClientId).Result; + return ConfidentialClientApplicationBuilder + .Create(options.Value.ClientId) + .WithCertificate(cert) + .WithAuthority(new Uri($"https://login.microsoftonline.com/{options.Value.TenantId}")) + .Build(); + }); + } + else + { + services.AddSingleton(provider => + { + var options = provider.GetRequiredService>(); + return ConfidentialClientApplicationBuilder + .Create(options.Value.ClientId) + .WithClientSecret(options.Value.ClientSecret) + .WithAuthority(new Uri($"https://login.microsoftonline.com/{options.Value.TenantId}")) + .Build(); + }); + } + } + + private static Uri GetBlobContainerUri(string storageAccountName) + { + return new Uri(string.Format( + "https://{0}.blob.core.windows.net/{1}", + storageAccountName, + Common.Constants.BlobContainerName)); + } + } +} diff --git a/Source/CompanyCommunicator.Common/Microsoft.Teams.Apps.CompanyCommunicator.Common.csproj b/Source/CompanyCommunicator.Common/Microsoft.Teams.Apps.CompanyCommunicator.Common.csproj index a0d8efcc8..d860f5091 100644 --- a/Source/CompanyCommunicator.Common/Microsoft.Teams.Apps.CompanyCommunicator.Common.csproj +++ b/Source/CompanyCommunicator.Common/Microsoft.Teams.Apps.CompanyCommunicator.Common.csproj @@ -17,13 +17,17 @@ + + + + - + - + diff --git a/Source/CompanyCommunicator.Common/Secrets/Cache.cs b/Source/CompanyCommunicator.Common/Secrets/Cache.cs new file mode 100644 index 000000000..7e6edefb5 --- /dev/null +++ b/Source/CompanyCommunicator.Common/Secrets/Cache.cs @@ -0,0 +1,106 @@ +// +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// + +namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets +{ + using System; + using System.Collections.Generic; + using System.Threading; + using System.Threading.Tasks; + using global::Azure; + + /// + /// Maintains a cache of items. + /// + /// Source: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/keyvault/samples/keyvaultproxy/src. + /// + internal class Cache : IDisposable + { + private readonly Dictionary cache = new Dictionary(StringComparer.OrdinalIgnoreCase); +#pragma warning disable CS8632 // The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. + private SemaphoreSlim? semaphore = new SemaphoreSlim(1, 1); +#pragma warning restore CS8632 // The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. + + /// + public void Dispose() + { + if (this.semaphore is { }) + { + this.semaphore.Dispose(); + this.semaphore = null; + } + } + + /// + /// Gets a valid or requests and caches a . + /// + /// Whether certain operations should be performed asynchronously. + /// The URI sans query parameters to cache. + /// The amount of time for which the cached item is valid. + /// The action to request a response. + /// A new . + internal async ValueTask GetOrAddAsync(bool isAsync, string uri, TimeSpan ttl, Func> action) + { + this.ThrowIfDisposed(); + + if (isAsync) + { + await this.semaphore!.WaitAsync().ConfigureAwait(false); + } + else + { + this.semaphore!.Wait(); + } + + try + { + // Try to get a valid cached response inside the lock before fetching. + if (this.cache.TryGetValue(uri, out CachedResponse cachedResponse) && cachedResponse.IsValid) + { + return await cachedResponse.CloneAsync(isAsync).ConfigureAwait(false); + } + + Response response = await action().ConfigureAwait(false); + if (response.Status == 200 && response.ContentStream is { }) + { + cachedResponse = await CachedResponse.CreateAsync(isAsync, response, ttl).ConfigureAwait(false); + this.cache[uri] = cachedResponse; + } + + return response; + } + finally + { + this.semaphore.Release(); + } + } + + /// + /// Clears the cache. + /// + internal void Clear() + { + this.ThrowIfDisposed(); + + this.semaphore!.Wait(); + try + { + this.cache.Clear(); + } + finally + { + this.semaphore.Release(); + } + } + + private void ThrowIfDisposed() + { + if (this.semaphore is null) + { + throw new ObjectDisposedException(nameof(this.semaphore)); + } + } + } +} \ No newline at end of file diff --git a/Source/CompanyCommunicator.Common/Secrets/CachedResponse.cs b/Source/CompanyCommunicator.Common/Secrets/CachedResponse.cs new file mode 100644 index 000000000..143f7bf5b --- /dev/null +++ b/Source/CompanyCommunicator.Common/Secrets/CachedResponse.cs @@ -0,0 +1,127 @@ +// +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// + +#nullable disable + +namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Threading.Tasks; + using global::Azure; + using global::Azure.Core; + + /// + /// A cached that is cloned and returned for subsequent requests. + /// + /// Source: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/keyvault/samples/keyvaultproxy/src. + /// + internal class CachedResponse : Response + { + private readonly ResponseHeaders headers; + private DateTimeOffset expires; + + private CachedResponse(int status, string reasonPhrase, ResponseHeaders headers) + { + this.Status = status; + this.ReasonPhrase = reasonPhrase; + + this.headers = headers; + } + + /// + public override int Status { get; } + + /// + public override string ReasonPhrase { get; } + + /// + public override Stream ContentStream { get; set; } + + /// + public override string ClientRequestId { get; set; } + + /// + /// Gets a value indicating whether this is still valid (has not expired). + /// + internal bool IsValid => DateTimeOffset.Now <= this.expires; + + /// + public override void Dispose() => this.ContentStream?.Dispose(); + + /// + /// Creates a new . + /// + /// Whether to copy the asynchronously. + /// The to copy. + /// The time to live. + /// A copied from the . + internal static async ValueTask CreateAsync(bool isAsync, Response response, TimeSpan ttl) + { + CachedResponse cachedResponse = await CloneAsync(isAsync, response).ConfigureAwait(false); + cachedResponse.expires = DateTimeOffset.Now + ttl; + + return cachedResponse; + } + + /// + /// Clones this into a new . + /// + /// Whether to copy the asynchronously. + /// A cloned . + internal async ValueTask CloneAsync(bool isAsync) => + await CloneAsync(isAsync, this).ConfigureAwait(false); + + /// + protected override bool ContainsHeader(string name) => this.headers.Contains(name); + + /// + protected override IEnumerable EnumerateHeaders() => this.headers; + + /// + protected override bool TryGetHeader(string name, out string value) => this.headers.TryGetValue(name, out value); + + /// + protected override bool TryGetHeaderValues(string name, out IEnumerable values) => this.headers.TryGetValues(name, out values); + + private static async ValueTask CloneAsync(bool isAsync, Response response) + { + CachedResponse cachedResponse = new CachedResponse(response.Status, response.ReasonPhrase, response.Headers) + { + ClientRequestId = response.ClientRequestId, + }; + + if (response.ContentStream is { }) + { + MemoryStream ms = new MemoryStream(); + cachedResponse.ContentStream = ms; + + if (isAsync) + { + await response.ContentStream.CopyToAsync(cachedResponse.ContentStream).ConfigureAwait(false); + } + else + { + response.ContentStream.CopyTo(cachedResponse.ContentStream); + } + + ms.Position = 0; + + // Reset the position if we can; otherwise, copy the buffer. + if (response.ContentStream.CanSeek) + { + response.ContentStream.Position = 0; + } + else + { + response.ContentStream = new MemoryStream(ms.ToArray()); + } + } + + return cachedResponse; + } + } +} \ No newline at end of file diff --git a/Source/CompanyCommunicator.Common/Secrets/CertificateProvider.cs b/Source/CompanyCommunicator.Common/Secrets/CertificateProvider.cs new file mode 100644 index 000000000..b6c70ae32 --- /dev/null +++ b/Source/CompanyCommunicator.Common/Secrets/CertificateProvider.cs @@ -0,0 +1,123 @@ +// +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// + +namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Security.Cryptography.X509Certificates; + using System.Threading.Tasks; + using global::Azure; + using global::Azure.Security.KeyVault.Certificates; + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Options; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot; + + /// + /// This class implements ICertficateProvider, which is used to retrieve certificates. + /// + public class CertificateProvider : ICertificateProvider + { + private readonly Dictionary certificateNameMap; + private readonly bool useCertificate; + private readonly CertificateClient certificateClient; + private readonly ILogger logger; + + /// + /// Initializes a new instance of the class. + /// A constructor that accepts a map of bot id list and credentials. + /// + /// bot options. + /// certificate client. + /// The logger factory. + public CertificateProvider( + IOptions botOptions, + CertificateClient certificateClient, + ILoggerFactory loggerFactory) + { + botOptions = botOptions ?? throw new ArgumentNullException(nameof(botOptions)); + this.logger = loggerFactory?.CreateLogger() ?? throw new ArgumentNullException(nameof(loggerFactory)); + this.useCertificate = botOptions.Value.UseCertificate; + this.certificateClient = certificateClient ?? throw new ArgumentNullException(nameof(certificateClient)); + if (this.useCertificate) + { + this.certificateNameMap = this.CreateCertificateNameMap(botOptions.Value); + } + } + + /// + public async Task GetCertificateAsync(string appId) + { + appId = appId ?? throw new ArgumentNullException(nameof(appId)); + + var certificateName = this.certificateNameMap.ContainsKey(appId) ? this.certificateNameMap[appId] : null; + + if (string.IsNullOrEmpty(certificateName)) + { + throw new InvalidOperationException("Certificate name not found."); + } + + try + { + var response = await this.certificateClient.DownloadCertificateAsync(certificateName); + return response.Value; + } + catch (InvalidDataException exception) + { + this.logger.LogError(exception, $"Certificate not found. Cert name: {certificateName} "); + } + catch (RequestFailedException exception) + { + this.logger.LogError(exception, $"Failed to fetch certificate. ErrorCode: {exception.ErrorCode} Cert name: {certificateName}."); + } + catch (Exception exception) + { + this.logger.LogError(exception, $"Failed to fetch certificate. Cert name: {certificateName}."); + } + + throw new Exception($"Certificate not found. Cert name: {certificateName} "); + } + + /// + public bool IsCertificateAuthenticationEnabled() + { + return this.useCertificate; + } + + private Dictionary CreateCertificateNameMap(BotOptions botOptions) + { + var certificateNameMap = new Dictionary(); + if (string.IsNullOrEmpty(botOptions.UserAppId)) + { + throw new Exception("User app id not found."); + } + else + { + certificateNameMap.Add(botOptions.UserAppId, botOptions.UserAppCertName); + } + + if (string.IsNullOrEmpty(botOptions.AuthorAppId)) + { + throw new Exception("Author app id not found."); + } + else + { + certificateNameMap.Add(botOptions.AuthorAppId, botOptions.AuthorAppCertName); + } + + if (string.IsNullOrEmpty(botOptions.GraphAppId)) + { + throw new Exception("Graph app id not found."); + } + else + { + certificateNameMap.Add(botOptions.GraphAppId, botOptions.GraphAppCertName); + } + + return certificateNameMap; + } + } +} diff --git a/Source/CompanyCommunicator.Common/Secrets/ICertificateProvider.cs b/Source/CompanyCommunicator.Common/Secrets/ICertificateProvider.cs new file mode 100644 index 000000000..4b937df6a --- /dev/null +++ b/Source/CompanyCommunicator.Common/Secrets/ICertificateProvider.cs @@ -0,0 +1,29 @@ +// +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// + +namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets +{ + using System.Security.Cryptography.X509Certificates; + using System.Threading.Tasks; + + /// + /// This instance is used to retrieve certificates. + /// + public interface ICertificateProvider + { + /// + /// Gets the certificate for the given app id. + /// + /// The Azure active directory Identifier. + /// Certificate. + Task GetCertificateAsync(string appId); + + /// + /// Checks if authentication is to be done using certificate. + /// + /// Boolean indicating if authentication type is certificate. + bool IsCertificateAuthenticationEnabled(); + } +} diff --git a/Source/CompanyCommunicator.Common/Secrets/KeyVaultProxy.cs b/Source/CompanyCommunicator.Common/Secrets/KeyVaultProxy.cs new file mode 100644 index 000000000..383cbaa2b --- /dev/null +++ b/Source/CompanyCommunicator.Common/Secrets/KeyVaultProxy.cs @@ -0,0 +1,119 @@ +// +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// + +namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets +{ + using System; + using System.Threading.Tasks; + using global::Azure.Core; + using global::Azure.Core.Pipeline; + + /// + /// Cache GET requests for secrets, keys, or certificates for Azure Key Vault clients. + /// + /// Source: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/keyvault/samples/keyvaultproxy/src. + /// + public class KeyVaultProxy : HttpPipelinePolicy, IDisposable + { + private readonly Cache cache; + + /// + /// Initializes a new instance of the class. + /// + /// Optional time to live for cached responses. The default is 1 hour. + /// is less than 0. + public KeyVaultProxy(TimeSpan? ttl = null) + { + ttl ??= TimeSpan.FromHours(1); + if (ttl < TimeSpan.Zero) + { + throw new ArgumentOutOfRangeException(nameof(ttl)); + } + + this.Ttl = ttl.Value; + this.cache = new Cache(); + } + + /// + /// Gets the time to live for cached responses. + /// + public TimeSpan Ttl { get; internal set; } + + /// + /// Clears the in-memory cache. + /// + public void Clear() => this.cache.Clear(); + + /// + public override void Process(HttpMessage message, ReadOnlyMemory pipeline) => +#pragma warning disable AZC0102 // TaskExtensions.EnsureCompleted() is not in scope + this.ProcessAsync(false, message, pipeline).AsTask().GetAwaiter().GetResult(); +#pragma warning restore AZC0102 + + /// + public override async ValueTask ProcessAsync(HttpMessage message, ReadOnlyMemory pipeline) => + await this.ProcessAsync(true, message, pipeline).ConfigureAwait(false); + + /// + void IDisposable.Dispose() + { + this.cache.Dispose(); + GC.SuppressFinalize(this); + } + + /// + /// checks if uri is supported. + /// + /// Uri. + /// If uri is supported. + internal static bool IsSupported(string uri) + { + // Find the beginning of the path component after the scheme. + int pos = uri.IndexOf('/', 8); + if (pos > 0) + { + uri = uri.Substring(pos); + return uri.StartsWith("/secrets/", StringComparison.OrdinalIgnoreCase) + || uri.StartsWith("/keys/", StringComparison.OrdinalIgnoreCase) + || uri.StartsWith("/certificates/", StringComparison.OrdinalIgnoreCase); + } + + return false; + } + + private static async ValueTask ProcessNextAsync(bool isAsync, HttpMessage message, ReadOnlyMemory pipeline) + { + if (isAsync) + { + await ProcessNextAsync(message, pipeline).ConfigureAwait(false); + } + else + { + ProcessNext(message, pipeline); + } + } + + private async ValueTask ProcessAsync(bool isAsync, HttpMessage message, ReadOnlyMemory pipeline) + { + Request request = message.Request; + if (request.Method == RequestMethod.Get) + { + string uri = request.Uri.ToUri().GetLeftPart(UriPartial.Path); + if (IsSupported(uri)) + { + message.Response = await this.cache.GetOrAddAsync(isAsync, uri, this.Ttl, async () => + { + await ProcessNextAsync(isAsync, message, pipeline).ConfigureAwait(false); + return message.Response; + }).ConfigureAwait(false); + + return; + } + } + + await ProcessNextAsync(isAsync, message, pipeline).ConfigureAwait(false); + } + } +} \ No newline at end of file diff --git a/Source/CompanyCommunicator.Common/Secrets/SecretsRegistry.cs b/Source/CompanyCommunicator.Common/Secrets/SecretsRegistry.cs new file mode 100644 index 000000000..578f4cf29 --- /dev/null +++ b/Source/CompanyCommunicator.Common/Secrets/SecretsRegistry.cs @@ -0,0 +1,42 @@ +// +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// + +namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets +{ + using System; + using global::Azure.Core; + using global::Azure.Identity; + using global::Azure.Security.KeyVault.Certificates; + using Microsoft.Extensions.DependencyInjection; + + /// + /// Register secrets dependencies. + /// + public static class SecretsRegistry + { + /// + /// Service Collection extension. + /// + /// Injects secrets provider. + /// + /// Service collection. + /// Key vault url. + /// the service collection. + public static IServiceCollection AddSecretsProvider(this IServiceCollection services, string keyVaultUrl) + { + if (string.IsNullOrEmpty(keyVaultUrl)) + { + throw new ArgumentNullException("KeyVault Url is null or empty."); + } + + var options = new CertificateClientOptions(); + options.AddPolicy(new KeyVaultProxy(), HttpPipelinePosition.PerCall); + services.AddSingleton(new CertificateClient(new Uri(keyVaultUrl), new DefaultAzureCredential(), options)); + services.AddSingleton(); + + return services; + } + } +} diff --git a/Source/CompanyCommunicator.Common/Services/CommonBot/AuthorAppCredentials.cs b/Source/CompanyCommunicator.Common/Services/CommonBot/AuthorAppCredentials.cs index aa0d217c5..6c9adbe91 100644 --- a/Source/CompanyCommunicator.Common/Services/CommonBot/AuthorAppCredentials.cs +++ b/Source/CompanyCommunicator.Common/Services/CommonBot/AuthorAppCredentials.cs @@ -5,6 +5,8 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot { + using System; + using System.Threading.Tasks; using Microsoft.Bot.Connector.Authentication; using Microsoft.Extensions.Options; @@ -13,6 +15,8 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot /// public class AuthorAppCredentials : MicrosoftAppCredentials { + private readonly bool useCertificate; + /// /// Initializes a new instance of the class. /// @@ -22,6 +26,17 @@ public AuthorAppCredentials(IOptions botOptions) appId: botOptions.Value.AuthorAppId, password: botOptions.Value.AuthorAppPassword) { + botOptions = botOptions ?? throw new ArgumentNullException(nameof(botOptions)); + this.useCertificate = botOptions.Value.UseCertificate; + } + + /// + /// Checks if authentication is to be done using certificate. + /// + /// Boolean indicating if authentication type is certifcate. + public bool IsCertificateAuthenticationEnabled() + { + return this.useCertificate; } } } diff --git a/Source/CompanyCommunicator.Common/Services/CommonBot/BotOptions.cs b/Source/CompanyCommunicator.Common/Services/CommonBot/BotOptions.cs index 36e089094..516eb4fa1 100644 --- a/Source/CompanyCommunicator.Common/Services/CommonBot/BotOptions.cs +++ b/Source/CompanyCommunicator.Common/Services/CommonBot/BotOptions.cs @@ -6,28 +6,53 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot { /// - /// Options used for holding metadata for the bot. + /// Options used for holding meta data for the bot. /// public class BotOptions { /// - /// Gets or sets the Microsoft app ID for the user bot. + /// Gets or sets the User app ID for the user bot. /// public string UserAppId { get; set; } /// - /// Gets or sets the Microsoft app password for the user bot. + /// Gets or sets the User app password for the user bot. /// public string UserAppPassword { get; set; } /// - /// Gets or sets the Microsoft app ID for the author bot. + /// Gets or sets the Author app ID for the author bot. /// public string AuthorAppId { get; set; } /// - /// Gets or sets the Microsoft app password for the author bot. + /// Gets or sets the Author app password for the author bot. /// public string AuthorAppPassword { get; set; } + + /// + /// Gets or sets the Graph app ID for the author bot. + /// + public string GraphAppId { get; set; } + + /// + /// Gets or sets a value indicating whether to use certificates. + /// + public bool UseCertificate { get; set; } + + /// + /// Gets or sets the certificate name of the author app. + /// + public string AuthorAppCertName { get; set; } + + /// + /// Gets or sets the certificate name of the user app. + /// + public string UserAppCertName { get; set; } + + /// + /// Gets or sets the certificate name of the graph app. + /// + public string GraphAppCertName { get; set; } } } diff --git a/Source/CompanyCommunicator.Common/Services/CommonBot/UserAppCredentials.cs b/Source/CompanyCommunicator.Common/Services/CommonBot/UserAppCredentials.cs index d4d7051ec..6e6fe3cb9 100644 --- a/Source/CompanyCommunicator.Common/Services/CommonBot/UserAppCredentials.cs +++ b/Source/CompanyCommunicator.Common/Services/CommonBot/UserAppCredentials.cs @@ -5,6 +5,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot { + using System; using Microsoft.Bot.Connector.Authentication; using Microsoft.Extensions.Options; @@ -13,6 +14,8 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot /// public class UserAppCredentials : MicrosoftAppCredentials { + private readonly bool useCertificate; + /// /// Initializes a new instance of the class. /// @@ -22,6 +25,17 @@ public UserAppCredentials(IOptions botOptions) appId: botOptions.Value.UserAppId, password: botOptions.Value.UserAppPassword) { + botOptions = botOptions ?? throw new ArgumentNullException(nameof(botOptions)); + this.useCertificate = botOptions.Value.UseCertificate; + } + + /// + /// Checks if authentication is to be done using certificate. + /// + /// Boolean indicating if authentication type is certifcate. + public bool IsCertificateAuthenticationEnabled() + { + return this.useCertificate; } } } diff --git a/Source/CompanyCommunicator.Common/Services/MessageQueues/BaseQueue.cs b/Source/CompanyCommunicator.Common/Services/MessageQueues/BaseQueue.cs index 75d4f05a3..6195e1015 100644 --- a/Source/CompanyCommunicator.Common/Services/MessageQueues/BaseQueue.cs +++ b/Source/CompanyCommunicator.Common/Services/MessageQueues/BaseQueue.cs @@ -8,10 +8,8 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues using System; using System.Collections.Generic; using System.Linq; - using System.Text; using System.Threading.Tasks; - using Microsoft.Azure.ServiceBus; - using Microsoft.Azure.ServiceBus.Core; + using global::Azure.Messaging.ServiceBus; using Newtonsoft.Json; /// @@ -29,31 +27,49 @@ public abstract class BaseQueue : IBaseQueue /// The maximum number of messages that can be in one batch request to the service bus queue. /// public static readonly int MaxNumberOfMessagesInBatchRequest = 100; - - private readonly MessageSender messageSender; + private readonly ServiceBusSender sender; /// /// Initializes a new instance of the class. /// - /// The service bus connection string. + /// The service bus client. /// Azure service bus queue's name. - public BaseQueue(string serviceBusConnectionString, string queueName) + public BaseQueue(ServiceBusClient serviceBusClient, string queueName) { - this.messageSender = new MessageSender(serviceBusConnectionString, queueName); + if (serviceBusClient == null) + { + throw new ArgumentNullException(nameof(serviceBusClient)); + } + + if (string.IsNullOrEmpty(queueName)) + { + throw new ArgumentNullException(nameof(queueName)); + } + + this.sender = serviceBusClient.CreateSender(queueName); } /// public async Task SendAsync(T queueMessageContent) { - var messageBody = JsonConvert.SerializeObject(queueMessageContent); - var serviceBusMessage = new Message(Encoding.UTF8.GetBytes(messageBody)); + if (queueMessageContent == null) + { + throw new ArgumentNullException(nameof(queueMessageContent)); + } - await this.messageSender.SendAsync(serviceBusMessage); + var messageBody = JsonConvert.SerializeObject(queueMessageContent); + var serviceBusMessage = new ServiceBusMessage(messageBody); + await this.sender.SendMessageAsync(serviceBusMessage); } /// public async Task SendAsync(IEnumerable queueMessageContentBatch) { + if (queueMessageContentBatch == null) + { + throw new ArgumentNullException(nameof(queueMessageContentBatch)); + } + var queueMessageContentBatchAsList = queueMessageContentBatch.ToList(); // Check that the number of messages to add to the queue in the batch request is not @@ -68,23 +84,25 @@ public async Task SendAsync(IEnumerable queueMessageContentBatch) .Select(queueMessageContent => { var messageBody = JsonConvert.SerializeObject(queueMessageContent); - return new Message(Encoding.UTF8.GetBytes(messageBody)); + return new ServiceBusMessage(messageBody); }) .ToList(); - await this.messageSender.SendAsync(serviceBusMessages); + await this.sender.SendMessagesAsync(serviceBusMessages); } /// public async Task SendDelayedAsync(T queueMessageContent, double delayNumberOfSeconds) { - var messageBody = JsonConvert.SerializeObject(queueMessageContent); - var serviceBusMessage = new Message(Encoding.UTF8.GetBytes(messageBody)) + if (queueMessageContent == null) { - ScheduledEnqueueTimeUtc = DateTime.UtcNow + TimeSpan.FromSeconds(delayNumberOfSeconds), - }; + throw new ArgumentNullException(nameof(queueMessageContent)); + } - await this.messageSender.SendAsync(serviceBusMessage); + var messageBody = JsonConvert.SerializeObject(queueMessageContent); + var scheduledEnqueueTimeUtc = DateTime.UtcNow + TimeSpan.FromSeconds(delayNumberOfSeconds); + var serviceBusMessage = new ServiceBusMessage(messageBody); + await this.sender.ScheduleMessageAsync(serviceBusMessage, scheduledEnqueueTimeUtc); } } } diff --git a/Source/CompanyCommunicator.Common/Services/MessageQueues/DataQueue/DataQueue.cs b/Source/CompanyCommunicator.Common/Services/MessageQueues/DataQueue/DataQueue.cs index b30dc570a..20b7f939d 100644 --- a/Source/CompanyCommunicator.Common/Services/MessageQueues/DataQueue/DataQueue.cs +++ b/Source/CompanyCommunicator.Common/Services/MessageQueues/DataQueue/DataQueue.cs @@ -5,7 +5,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.DataQueue { - using Microsoft.Extensions.Options; + using global::Azure.Messaging.ServiceBus; /// /// The message queue service connected to the "company-communicator-data" queue in Azure service bus. @@ -20,10 +20,10 @@ public class DataQueue : BaseQueue, IDataQueue /// /// Initializes a new instance of the class. /// - /// The message queue options. - public DataQueue(IOptions messageQueueOptions) + /// The service bus client. + public DataQueue(ServiceBusClient serviceBusClient) : base( - serviceBusConnectionString: messageQueueOptions.Value.ServiceBusConnection, + serviceBusClient: serviceBusClient, queueName: DataQueue.QueueName) { } diff --git a/Source/CompanyCommunicator.Common/Services/MessageQueues/ExportQueue/ExportQueue.cs b/Source/CompanyCommunicator.Common/Services/MessageQueues/ExportQueue/ExportQueue.cs index 2a8de8dca..1a9802974 100644 --- a/Source/CompanyCommunicator.Common/Services/MessageQueues/ExportQueue/ExportQueue.cs +++ b/Source/CompanyCommunicator.Common/Services/MessageQueues/ExportQueue/ExportQueue.cs @@ -5,7 +5,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.ExportQueue { - using Microsoft.Extensions.Options; + using global::Azure.Messaging.ServiceBus; /// /// The message queue service connected to the "company-communicator-export" queue in Azure service bus. @@ -20,10 +20,10 @@ public class ExportQueue : BaseQueue, IExportQueue /// /// Initializes a new instance of the class. /// - /// The message queue options. - public ExportQueue(IOptions messageQueueOptions) + /// The service bus client. + public ExportQueue(ServiceBusClient serviceBusClient) : base( - serviceBusConnectionString: messageQueueOptions.Value.ServiceBusConnection, + serviceBusClient: serviceBusClient, queueName: ExportQueue.QueueName) { } diff --git a/Source/CompanyCommunicator.Common/Services/MessageQueues/MessageQueueOptions.cs b/Source/CompanyCommunicator.Common/Services/MessageQueues/MessageQueueOptions.cs deleted file mode 100644 index 0c2e0d3d9..000000000 --- a/Source/CompanyCommunicator.Common/Services/MessageQueues/MessageQueueOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -// - -namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues -{ - /// - /// Options used for creating service bus message queues. - /// - public class MessageQueueOptions - { - /// - /// Gets or sets the service bus connection. - /// - public string ServiceBusConnection { get; set; } - } -} diff --git a/Source/CompanyCommunicator.Common/Services/MessageQueues/PrepareToSendQueue/PrepareToSendQueue.cs b/Source/CompanyCommunicator.Common/Services/MessageQueues/PrepareToSendQueue/PrepareToSendQueue.cs index 93db3847e..0606457a4 100644 --- a/Source/CompanyCommunicator.Common/Services/MessageQueues/PrepareToSendQueue/PrepareToSendQueue.cs +++ b/Source/CompanyCommunicator.Common/Services/MessageQueues/PrepareToSendQueue/PrepareToSendQueue.cs @@ -5,7 +5,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.PrepareToSendQueue { - using Microsoft.Extensions.Options; + using global::Azure.Messaging.ServiceBus; /// /// The message queue service connected to the "company-communicator-prep" queue in Azure service bus. @@ -20,10 +20,10 @@ public class PrepareToSendQueue : BaseQueue, I /// /// Initializes a new instance of the class. /// - /// The message queue options. - public PrepareToSendQueue(IOptions messageQueueOptions) + /// The service bus client. + public PrepareToSendQueue(ServiceBusClient serviceBusClient) : base( - serviceBusConnectionString: messageQueueOptions.Value.ServiceBusConnection, + serviceBusClient: serviceBusClient, queueName: PrepareToSendQueue.QueueName) { } diff --git a/Source/CompanyCommunicator.Common/Services/MessageQueues/SendQueue/SendQueue.cs b/Source/CompanyCommunicator.Common/Services/MessageQueues/SendQueue/SendQueue.cs index d7de58568..53aec2e17 100644 --- a/Source/CompanyCommunicator.Common/Services/MessageQueues/SendQueue/SendQueue.cs +++ b/Source/CompanyCommunicator.Common/Services/MessageQueues/SendQueue/SendQueue.cs @@ -5,7 +5,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.SendQueue { - using Microsoft.Extensions.Options; + using global::Azure.Messaging.ServiceBus; /// /// The message queue service connected to the "company-communicator-send" queue in Azure service bus. @@ -20,10 +20,10 @@ public class SendQueue : BaseQueue, ISendQueue /// /// Initializes a new instance of the class. /// - /// The message queue options. - public SendQueue(IOptions messageQueueOptions) + /// The service bus client. + public SendQueue(ServiceBusClient serviceBusClient) : base( - serviceBusConnectionString: messageQueueOptions.Value.ServiceBusConnection, + serviceBusClient: serviceBusClient, queueName: SendQueue.QueueName) { } diff --git a/Source/CompanyCommunicator.Common/Services/MicrosoftGraph/TeamWork/AppManagerService.cs b/Source/CompanyCommunicator.Common/Services/MicrosoftGraph/TeamWork/AppManagerService.cs index 41b5b58a4..854efd2d0 100644 --- a/Source/CompanyCommunicator.Common/Services/MicrosoftGraph/TeamWork/AppManagerService.cs +++ b/Source/CompanyCommunicator.Common/Services/MicrosoftGraph/TeamWork/AppManagerService.cs @@ -46,7 +46,7 @@ public async Task InstallAppForUserAsync(string appId, string userId) { AdditionalData = new Dictionary() { - { "teamsApp@odata.bind", $"{GraphConstants.BetaBaseUrl}/appCatalogs/teamsApps/{appId}" }, + { "teamsApp@odata.bind", $"{GraphConstants.V1BaseUrl}/appCatalogs/teamsApps/{appId}" }, }, }; diff --git a/Source/CompanyCommunicator.Common/Services/Teams/Conversations/ConversationService.cs b/Source/CompanyCommunicator.Common/Services/Teams/Conversations/ConversationService.cs index 843efb99f..a213b75ea 100644 --- a/Source/CompanyCommunicator.Common/Services/Teams/Conversations/ConversationService.cs +++ b/Source/CompanyCommunicator.Common/Services/Teams/Conversations/ConversationService.cs @@ -53,7 +53,8 @@ public async Task CreateUserConversationAsync( int maxAttempts, ILogger log) { - return await this.CreateConversationAsync(teamsUserId, tenantId, serviceUrl, maxAttempts, this.userAppCredentials, log); + var useCertificate = this.userAppCredentials.IsCertificateAuthenticationEnabled(); + return await this.CreateConversationAsync(teamsUserId, tenantId, serviceUrl, maxAttempts, this.userAppCredentials, useCertificate, log); } /// @@ -64,7 +65,8 @@ public async Task CreateAuthorConversationAsync( int maxAttempts, ILogger log) { - return await this.CreateConversationAsync(teamsUserId, tenantId, serviceUrl, maxAttempts, this.authorAppCredentials, log); + var useCertificate = this.authorAppCredentials.IsCertificateAuthenticationEnabled(); + return await this.CreateConversationAsync(teamsUserId, tenantId, serviceUrl, maxAttempts, this.authorAppCredentials, useCertificate, log); } private async Task CreateConversationAsync( @@ -73,6 +75,7 @@ private async Task CreateConversationAsync( string serviceUrl, int maxAttempts, MicrosoftAppCredentials credentials, + bool useCertificate, ILogger log) { if (string.IsNullOrEmpty(teamsUserId)) @@ -111,8 +114,29 @@ private async Task CreateConversationAsync( try { var retryPolicy = this.GetRetryPolicy(maxAttempts, log); - await retryPolicy.ExecuteAsync(async () => - await this.botAdapter.CreateConversationAsync( + if (useCertificate) + { + await retryPolicy.ExecuteAsync(async () => + await this.botAdapter.CreateConversationUsingCertificateAsync( + channelId: ConversationService.MicrosoftTeamsChannelId, + serviceUrl: serviceUrl, + appCredentials: credentials as AppCredentials, + conversationParameters: conversationParameters, + callback: (turnContext, cancellationToken) => + { + // Success. + response.Result = Result.Succeeded; + response.StatusCode = (int)HttpStatusCode.Created; + response.ConversationId = turnContext.Activity.Conversation.Id; + + return Task.CompletedTask; + }, + cancellationToken: CancellationToken.None)); + } + else + { + await retryPolicy.ExecuteAsync(async () => + await this.botAdapter.CreateConversationUsingSecretAsync( channelId: ConversationService.MicrosoftTeamsChannelId, serviceUrl: serviceUrl, credentials: credentials, @@ -127,6 +151,7 @@ await this.botAdapter.CreateConversationAsync( return Task.CompletedTask; }, cancellationToken: CancellationToken.None)); + } } catch (ErrorResponseException e) { diff --git a/Source/CompanyCommunicator.Common/Services/Teams/Messages/MessageService.cs b/Source/CompanyCommunicator.Common/Services/Teams/Messages/MessageService.cs index 467d471c2..13a11e182 100644 --- a/Source/CompanyCommunicator.Common/Services/Teams/Messages/MessageService.cs +++ b/Source/CompanyCommunicator.Common/Services/Teams/Messages/MessageService.cs @@ -9,10 +9,10 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.Teams using System.Net; using System.Threading; using System.Threading.Tasks; - using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Schema; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot; using Polly; using Polly.Contrib.WaitAndRetry; @@ -24,7 +24,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.Teams public class MessageService : IMessageService { private readonly string microsoftAppId; - private readonly BotFrameworkHttpAdapter botAdapter; + private readonly ICCBotFrameworkHttpAdapter botAdapter; /// /// Initializes a new instance of the class. @@ -33,7 +33,7 @@ public class MessageService : IMessageService /// The bot adapter. public MessageService( IOptions botOptions, - BotFrameworkHttpAdapter botAdapter) + ICCBotFrameworkHttpAdapter botAdapter) { this.microsoftAppId = botOptions?.Value?.UserAppId ?? throw new ArgumentNullException(nameof(botOptions)); this.botAdapter = botAdapter ?? throw new ArgumentNullException(nameof(botAdapter)); @@ -83,7 +83,7 @@ public async Task SendMessageAsync( }; await this.botAdapter.ContinueConversationAsync( - botAppId: this.microsoftAppId, + botId: this.microsoftAppId, reference: conversationReference, callback: async (turnContext, cancellationToken) => { diff --git a/Source/CompanyCommunicator.Common/Services/Teams/TeamMembers/TeamMembersService.cs b/Source/CompanyCommunicator.Common/Services/Teams/TeamMembers/TeamMembersService.cs index e5b1bafb8..186897b35 100644 --- a/Source/CompanyCommunicator.Common/Services/Teams/TeamMembers/TeamMembersService.cs +++ b/Source/CompanyCommunicator.Common/Services/Teams/TeamMembers/TeamMembersService.cs @@ -11,11 +11,11 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.Teams using System.Threading; using System.Threading.Tasks; using Microsoft.Bot.Builder; - using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Builder.Teams; using Microsoft.Bot.Schema; using Microsoft.Bot.Schema.Teams; using Microsoft.Extensions.Options; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Extensions; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.UserData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot; @@ -25,7 +25,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.Teams /// public class TeamMembersService : ITeamMembersService { - private readonly BotFrameworkHttpAdapter botAdapter; + private readonly ICCBotFrameworkHttpAdapter botAdapter; private readonly string userAppId; private readonly string authorAppId; @@ -35,7 +35,7 @@ public class TeamMembersService : ITeamMembersService /// Bot adapter. /// Bot options. public TeamMembersService( - BotFrameworkHttpAdapter botAdapter, + ICCBotFrameworkHttpAdapter botAdapter, IOptions botOptions) { this.botAdapter = botAdapter ?? throw new ArgumentNullException(nameof(botAdapter)); diff --git a/Source/CompanyCommunicator.Data.Func/Services/FileCardServices/FileCardService.cs b/Source/CompanyCommunicator.Data.Func/Services/FileCardServices/FileCardService.cs index 4dcba7c6d..09683b4bb 100644 --- a/Source/CompanyCommunicator.Data.Func/Services/FileCardServices/FileCardService.cs +++ b/Source/CompanyCommunicator.Data.Func/Services/FileCardServices/FileCardService.cs @@ -9,10 +9,10 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Data.Func.Services.FileCardSe using System.Threading; using System.Threading.Tasks; using Microsoft.Bot.Builder; - using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Schema; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.UserData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Resources; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot; @@ -25,7 +25,7 @@ public class FileCardService : IFileCardService { private readonly IUserDataRepository userDataRepository; private readonly string authorAppId; - private readonly BotFrameworkHttpAdapter botAdapter; + private readonly ICCBotFrameworkHttpAdapter botAdapter; private readonly IStringLocalizer localizer; /// @@ -37,7 +37,7 @@ public class FileCardService : IFileCardService /// Localization service. public FileCardService( IOptions botOptions, - BotFrameworkHttpAdapter botAdapter, + ICCBotFrameworkHttpAdapter botAdapter, IUserDataRepository userDataRepository, IStringLocalizer localizer) { @@ -74,7 +74,7 @@ public async Task DeleteAsync(string userId, string fileConsentId) int maxNumberOfAttempts = 10; await this.botAdapter.ContinueConversationAsync( - botAppId: this.authorAppId, + botId: this.authorAppId, reference: conversationReference, callback: async (turnContext, cancellationToken) => { diff --git a/Source/CompanyCommunicator.Data.Func/Startup.cs b/Source/CompanyCommunicator.Data.Func/Startup.cs index e30141950..e51061950 100644 --- a/Source/CompanyCommunicator.Data.Func/Startup.cs +++ b/Source/CompanyCommunicator.Data.Func/Startup.cs @@ -10,19 +10,20 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Data.Func { using System; using System.Globalization; - using global::Azure.Storage.Blobs; using Microsoft.Azure.Functions.Extensions.DependencyInjection; using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Connector.Authentication; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Extensions; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.ExportData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.NotificationData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.SentNotificationData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.UserData; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot; - using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.DataQueue; using Microsoft.Teams.Apps.CompanyCommunicator.Data.Func.Services.FileCardServices; using Microsoft.Teams.Apps.CompanyCommunicator.Data.Func.Services.NotificationDataServices; @@ -48,26 +49,18 @@ public override void Configure(IFunctionsHostBuilder builder) repositoryOptions.EnsureTableExists = !configuration.GetValue("IsItExpectedThatTableAlreadyExists", true); }); - builder.Services.AddOptions() - .Configure((messageQueueOptions, configuration) => - { - messageQueueOptions.ServiceBusConnection = - configuration.GetValue("ServiceBusConnection"); - }); builder.Services.AddOptions() .Configure((botOptions, configuration) => { - botOptions.UserAppId = - configuration.GetValue("UserAppId"); - - botOptions.UserAppPassword = - configuration.GetValue("UserAppPassword"); - - botOptions.AuthorAppId = - configuration.GetValue("AuthorAppId"); - - botOptions.AuthorAppPassword = - configuration.GetValue("AuthorAppPassword"); + botOptions.UserAppId = configuration.GetValue("UserAppId"); + botOptions.UserAppPassword = configuration.GetValue("UserAppPassword", string.Empty); + botOptions.UserAppCertName = configuration.GetValue("UserAppCertName", string.Empty); + botOptions.AuthorAppId = configuration.GetValue("AuthorAppId"); + botOptions.AuthorAppCertName = configuration.GetValue("AuthorAppPassword", string.Empty); + botOptions.AuthorAppCertName = configuration.GetValue("AuthorAppCertName", string.Empty); + botOptions.GraphAppId = configuration.GetValue("GraphAppId"); + botOptions.GraphAppCertName = configuration.GetValue("GraphAppCertName", string.Empty); + botOptions.UseCertificate = configuration.GetValue("UseCertificate", false); }); builder.Services.AddOptions() .Configure((cleanUpFileOptions, configuration) => @@ -87,21 +80,25 @@ public override void Configure(IFunctionsHostBuilder builder) builder.Services.AddLocalization(); + var useManagedIdentity = bool.Parse(Environment.GetEnvironmentVariable("UseManagedIdentity")); + builder.Services.AddBlobClient(useManagedIdentity); + builder.Services.AddServiceBusClient(useManagedIdentity); + // Set current culture. var culture = Environment.GetEnvironmentVariable("i18n:DefaultCulture"); CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(culture); CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo(culture); - // Add blob client. - builder.Services.AddSingleton(sp => new BlobContainerClient( - sp.GetService().GetValue("StorageAccountConnectionString"), - Common.Constants.BlobContainerName)); - // Add bot services. builder.Services.AddSingleton(); builder.Services.AddSingleton(); + builder.Services.AddSingleton(); builder.Services.AddSingleton(); + // Add Secrets. + var keyVaultUrl = Environment.GetEnvironmentVariable("KeyVault:Url"); + builder.Services.AddSecretsProvider(keyVaultUrl); + // Add services. builder.Services.AddSingleton(); diff --git a/Source/CompanyCommunicator.Prep.Func/Startup.cs b/Source/CompanyCommunicator.Prep.Func/Startup.cs index 10e490d13..85bbdd71b 100644 --- a/Source/CompanyCommunicator.Prep.Func/Startup.cs +++ b/Source/CompanyCommunicator.Prep.Func/Startup.cs @@ -15,21 +15,21 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Prep.Func using Microsoft.Bot.Connector.Authentication; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; - using Microsoft.Extensions.Options; using Microsoft.Graph; using Microsoft.Identity.Client; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Clients; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Extensions; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.ExportData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.NotificationData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.SentNotificationData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.TeamData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.UserData; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.AdaptiveCard; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot; - using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.DataQueue; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.ExportQueue; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.SendQueue; @@ -61,23 +61,27 @@ public override void Configure(IFunctionsHostBuilder builder) repositoryOptions.EnsureTableExists = !configuration.GetValue("IsItExpectedThatTableAlreadyExists", false); }); - builder.Services.AddOptions() - .Configure((messageQueueOptions, configuration) => - { - messageQueueOptions.ServiceBusConnection = - configuration.GetValue("ServiceBusConnection"); - }); builder.Services.AddOptions() .Configure((botOptions, configuration) => { botOptions.UserAppId = configuration.GetValue("UserAppId"); botOptions.UserAppPassword = - configuration.GetValue("UserAppPassword"); + configuration.GetValue("UserAppPassword", string.Empty); botOptions.AuthorAppId = configuration.GetValue("AuthorAppId"); botOptions.AuthorAppPassword = - configuration.GetValue("AuthorAppPassword"); + configuration.GetValue("AuthorAppPassword", string.Empty); + botOptions.GraphAppId = + configuration.GetValue("GraphAppId"); + botOptions.UseCertificate = + configuration.GetValue("UseCertificate", false); + botOptions.AuthorAppCertName = + configuration.GetValue("AuthorAppCertName", string.Empty); + botOptions.UserAppCertName = + configuration.GetValue("UserAppCertName", string.Empty); + botOptions.GraphAppCertName = + configuration.GetValue("GraphAppCertName", string.Empty); }); builder.Services.AddOptions() .Configure((dataQueueMessageOptions, configuration) => @@ -98,6 +102,10 @@ public override void Configure(IFunctionsHostBuilder builder) builder.Services.AddLocalization(); + var useManagedIdentity = bool.Parse(Environment.GetEnvironmentVariable("UseManagedIdentity")); + builder.Services.AddBlobClient(useManagedIdentity); + builder.Services.AddServiceBusClient(useManagedIdentity); + // Set current culture. var culture = Environment.GetEnvironmentVariable("i18n:DefaultCulture"); CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(culture); @@ -136,6 +144,10 @@ public override void Configure(IFunctionsHostBuilder builder) builder.Services.AddTransient(); builder.Services.AddTransient(); + // Add Secrets. + var keyVaultUrl = Environment.GetEnvironmentVariable("KeyVault:Url"); + builder.Services.AddSecretsProvider(keyVaultUrl); + // Add graph services. this.AddGraphServices(builder); @@ -152,21 +164,15 @@ private void AddGraphServices(IFunctionsHostBuilder builder) builder.Services.AddOptions(). Configure((confidentialClientApplicationOptions, configuration) => { - confidentialClientApplicationOptions.ClientId = configuration.GetValue("AuthorAppId"); - confidentialClientApplicationOptions.ClientSecret = configuration.GetValue("AuthorAppPassword"); + confidentialClientApplicationOptions.ClientId = configuration.GetValue("GraphAppId"); + confidentialClientApplicationOptions.ClientSecret = configuration.GetValue("GraphAppPassword", string.Empty); confidentialClientApplicationOptions.TenantId = configuration.GetValue("TenantId"); }); // Graph Token Services - builder.Services.AddSingleton(provider => - { - var options = provider.GetRequiredService>(); - return ConfidentialClientApplicationBuilder - .Create(options.Value.ClientId) - .WithClientSecret(options.Value.ClientSecret) - .WithAuthority(new Uri($"https://login.microsoftonline.com/{options.Value.TenantId}")) - .Build(); - }); + var useClientCertificates = bool.Parse(Environment.GetEnvironmentVariable("UseCertificate") ?? "false"); + + builder.Services.AddConfidentialClient(useClientCertificates); builder.Services.AddSingleton(); diff --git a/Source/CompanyCommunicator.Send.Func/Startup.cs b/Source/CompanyCommunicator.Send.Func/Startup.cs index 2cc89028f..f44e8f979 100644 --- a/Source/CompanyCommunicator.Send.Func/Startup.cs +++ b/Source/CompanyCommunicator.Send.Func/Startup.cs @@ -15,11 +15,13 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Send.Func using Microsoft.Bot.Connector.Authentication; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Extensions; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.NotificationData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.SentNotificationData; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot; - using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.SendQueue; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.Teams; using Microsoft.Teams.Apps.CompanyCommunicator.Send.Func.Services; @@ -45,11 +47,14 @@ public override void Configure(IFunctionsHostBuilder builder) builder.Services.AddOptions() .Configure((botOptions, configuration) => { - botOptions.UserAppId = - configuration.GetValue("UserAppId"); - - botOptions.UserAppPassword = - configuration.GetValue("UserAppPassword"); + botOptions.UserAppId = configuration.GetValue("UserAppId"); + botOptions.UserAppPassword = configuration.GetValue("UserAppPassword", string.Empty); + botOptions.UserAppCertName = configuration.GetValue("UserAppCertName", string.Empty); + botOptions.AuthorAppId = configuration.GetValue("AuthorAppId"); + botOptions.AuthorAppCertName = configuration.GetValue("AuthorAppCertName", string.Empty); + botOptions.GraphAppId = configuration.GetValue("GraphAppId"); + botOptions.GraphAppCertName = configuration.GetValue("GraphAppCertName", string.Empty); + botOptions.UseCertificate = configuration.GetValue("UseCertificate", false); }); builder.Services.AddOptions() .Configure((repositoryOptions, configuration) => @@ -63,15 +68,12 @@ public override void Configure(IFunctionsHostBuilder builder) repositoryOptions.EnsureTableExists = !configuration.GetValue("IsItExpectedThatTableAlreadyExists", true); }); - builder.Services.AddOptions() - .Configure((messageQueueOptions, configuration) => - { - messageQueueOptions.ServiceBusConnection = - configuration.GetValue("ServiceBusConnection"); - }); builder.Services.AddLocalization(); + var useManagedIdentity = bool.Parse(Environment.GetEnvironmentVariable("UseManagedIdentity")); + builder.Services.AddServiceBusClient(useManagedIdentity); + // Set current culture. var culture = Environment.GetEnvironmentVariable("i18n:DefaultCulture"); CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(culture); @@ -80,6 +82,7 @@ public override void Configure(IFunctionsHostBuilder builder) // Add bot services. builder.Services.AddSingleton(); builder.Services.AddSingleton(); + builder.Services.AddSingleton(); builder.Services.AddSingleton(); // Add teams services. @@ -95,6 +98,10 @@ public override void Configure(IFunctionsHostBuilder builder) // Add the Notification service. builder.Services.AddTransient(); + + // Add Secrets. + var keyVaultUrl = Environment.GetEnvironmentVariable("KeyVault:Url"); + builder.Services.AddSecretsProvider(keyVaultUrl); } } } diff --git a/Source/CompanyCommunicator/Authentication/AuthenticationServiceCollectionExtensions.cs b/Source/CompanyCommunicator/Authentication/AuthenticationServiceCollectionExtensions.cs index 768257bfb..2032ed1a8 100644 --- a/Source/CompanyCommunicator/Authentication/AuthenticationServiceCollectionExtensions.cs +++ b/Source/CompanyCommunicator/Authentication/AuthenticationServiceCollectionExtensions.cs @@ -14,7 +14,6 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Authentication using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Identity.Web; - using Microsoft.Identity.Web.TokenCacheProviders.InMemory; using Microsoft.IdentityModel.Tokens; /// @@ -35,7 +34,7 @@ public static void AddAuthentication( { AuthenticationServiceCollectionExtensions.RegisterAuthenticationServices(services, configuration, authenticationOptions); - AuthenticationServiceCollectionExtensions.RegisterAuthorizationPolicy(services); + AuthenticationServiceCollectionExtensions.RegisterAuthorizationPolicy(services, configuration); } // This method works specifically for single tenant application. @@ -45,18 +44,66 @@ private static void RegisterAuthenticationServices( AuthenticationOptions authenticationOptions) { AuthenticationServiceCollectionExtensions.ValidateAuthenticationOptions(authenticationOptions); + var azureADOptions = new AzureADOptions + { + Instance = authenticationOptions.AzureAdInstance, + TenantId = authenticationOptions.AzureAdTenantId, + ClientId = authenticationOptions.AzureAdClientId, + }; + var useCertificate = configuration.GetValue("UseCertificate"); + if (useCertificate) + { + RegisterAuthenticationServicesWithCertificate(services, configuration, authenticationOptions, azureADOptions); + } + else + { + RegisterAuthenticationServicesWithSecret(services, configuration, authenticationOptions, azureADOptions); + } + } - services.AddProtectedWebApi(configuration) - .AddProtectedWebApiCallsProtectedWebApi(configuration) - .AddInMemoryTokenCaches(); + private static void RegisterAuthenticationServicesWithCertificate( + IServiceCollection services, + IConfiguration configuration, + AuthenticationOptions authenticationOptions, + AzureADOptions azureADOptions) + { + services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddMicrosoftIdentityWebApi( + options => + { + options.Authority = $"{azureADOptions.Instance}{azureADOptions.TenantId}/v2.0"; + options.SaveToken = true; + options.TokenValidationParameters.ValidAudiences = AuthenticationServiceCollectionExtensions.GetValidAudiences(authenticationOptions); + options.TokenValidationParameters.AudienceValidator = AuthenticationServiceCollectionExtensions.AudienceValidator; + options.TokenValidationParameters.ValidIssuers = AuthenticationServiceCollectionExtensions.GetValidIssuers(authenticationOptions); + }, + microsoftIdentityOptions => + { + configuration.Bind("AzureAd", microsoftIdentityOptions); + microsoftIdentityOptions.ClientCertificates = new CertificateDescription[] + { + CertificateDescription.FromKeyVault(configuration.GetValue("KeyVault:Url"), configuration.GetValue("GraphAppCertName")), + }; + }) + .EnableTokenAcquisitionToCallDownstreamApi( + confidentialClientApplicationOptions => + { + configuration.Bind("AzureAd", confidentialClientApplicationOptions); + }) + .AddInMemoryTokenCaches(); + } + + private static void RegisterAuthenticationServicesWithSecret( + IServiceCollection services, + IConfiguration configuration, + AuthenticationOptions authenticationOptions, + AzureADOptions azureADOptions) + { + services.AddMicrosoftIdentityWebApiAuthentication(configuration) + .EnableTokenAcquisitionToCallDownstreamApi() + .AddInMemoryTokenCaches(); services.Configure(JwtBearerDefaults.AuthenticationScheme, options => { - var azureADOptions = new AzureADOptions - { - Instance = authenticationOptions.AzureAdInstance, - TenantId = authenticationOptions.AzureAdTenantId, - ClientId = authenticationOptions.AzureAdClientId, - }; options.Authority = $"{azureADOptions.Instance}{azureADOptions.TenantId}/v2.0"; options.SaveToken = true; options.TokenValidationParameters.ValidAudiences = AuthenticationServiceCollectionExtensions.GetValidAudiences(authenticationOptions); @@ -125,8 +172,9 @@ private static IEnumerable GetValidIssuers(AuthenticationOptions authent return validIssuers; } - private static void RegisterAuthorizationPolicy(IServiceCollection services) + private static void RegisterAuthorizationPolicy(IServiceCollection services, IConfiguration configuration) { + var graphGroupDatascope = configuration.GetValue("GroupsGraphScope"); services.AddAuthorization(options => { var mustContainUpnClaimRequirement = new MustBeValidUpnRequirement(); @@ -139,7 +187,7 @@ private static void RegisterAuthorizationPolicy(IServiceCollection services) options.AddPolicy( PolicyNames.MSGraphGroupDataPolicy, policyBuilder => policyBuilder - .AddRequirements(new MSGraphScopeRequirement(new string[] { Common.Constants.ScopeGroupReadAll })) + .AddRequirements(new MSGraphScopeRequirement(new string[] { graphGroupDatascope })) .RequireAuthenticatedUser() .Build()); }); diff --git a/Source/CompanyCommunicator/Authentication/GraphTokenProvider.cs b/Source/CompanyCommunicator/Authentication/GraphTokenProvider.cs index 181945882..b858cfdc6 100644 --- a/Source/CompanyCommunicator/Authentication/GraphTokenProvider.cs +++ b/Source/CompanyCommunicator/Authentication/GraphTokenProvider.cs @@ -52,12 +52,12 @@ private async Task GetAccessToken(string permissionType) if (permissionType.Equals(GraphPermissionType.Application.ToString(), StringComparison.CurrentCultureIgnoreCase)) { // we use MSAL.NET to get a token to call the API for application - accessToken = await this.tokenAcquisition.GetAccessTokenForAppAsync(new string[] { Common.Constants.ScopeDefault }); + accessToken = await this.tokenAcquisition.GetAccessTokenForAppAsync(Common.Constants.ScopeDefault); } else { // we use MSAL.NET to get a token to call the API On Behalf Of the current user - accessToken = await this.tokenAcquisition.GetAccessTokenForUserAsync(new string[] { Common.Constants.ScopeGroupReadAll, Common.Constants.ScopeAppCatalogReadAll }); + accessToken = await this.tokenAcquisition.GetAccessTokenForUserAsync(new string[] { Common.Constants.ScopeDefault }); } return accessToken; diff --git a/Source/CompanyCommunicator/Authentication/MSGraphScopeHandler.cs b/Source/CompanyCommunicator/Authentication/MSGraphScopeHandler.cs index 0527081bc..053f39690 100644 --- a/Source/CompanyCommunicator/Authentication/MSGraphScopeHandler.cs +++ b/Source/CompanyCommunicator/Authentication/MSGraphScopeHandler.cs @@ -51,7 +51,7 @@ protected override async Task HandleRequirementAsync(AuthorizationHandlerContext /// Indicate if access token has scope. private async Task HasScopesAsync(string[] scopes) { - var accessToken = await this.tokenAcquisition.GetAccessTokenForUserAsync(new[] { Common.Constants.ScopeGroupReadAll }); + var accessToken = await this.tokenAcquisition.GetAccessTokenForUserAsync(scopes); var tokenHandler = new JwtSecurityTokenHandler(); var securityToken = tokenHandler.ReadToken(accessToken) as JwtSecurityToken; var claimValue = securityToken.Claims diff --git a/Source/CompanyCommunicator/Bot/CompanyCommunicatorBotAdapter.cs b/Source/CompanyCommunicator/Bot/CompanyCommunicatorBotAdapter.cs index 5ef577da5..1f320f70a 100644 --- a/Source/CompanyCommunicator/Bot/CompanyCommunicatorBotAdapter.cs +++ b/Source/CompanyCommunicator/Bot/CompanyCommunicatorBotAdapter.cs @@ -5,25 +5,58 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Bot { + using System; + using System.Threading.Tasks; using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Connector.Authentication; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets; /// /// The Company Communicator Bot Adapter. /// public class CompanyCommunicatorBotAdapter : BotFrameworkHttpAdapter { + private readonly ICertificateProvider certificateProvider; + /// /// Initializes a new instance of the class. /// /// Credential provider service instance. /// Teams message filter middleware instance. + /// Certificate provider service instance. public CompanyCommunicatorBotAdapter( ICredentialProvider credentialProvider, - CompanyCommunicatorBotFilterMiddleware companyCommunicatorBotFilterMiddleware) + CompanyCommunicatorBotFilterMiddleware companyCommunicatorBotFilterMiddleware, + ICertificateProvider certificateProvider) : base(credentialProvider) { + companyCommunicatorBotFilterMiddleware = companyCommunicatorBotFilterMiddleware ?? throw new ArgumentNullException(nameof(companyCommunicatorBotFilterMiddleware)); + this.certificateProvider = certificateProvider ?? throw new ArgumentNullException(nameof(certificateProvider)); + + // Middleware this.Use(companyCommunicatorBotFilterMiddleware); } + + /// + protected override async Task BuildCredentialsAsync(string appId, string oAuthScope = null) + { + appId = appId ?? throw new ArgumentNullException(nameof(appId)); + + if (!this.certificateProvider.IsCertificateAuthenticationEnabled()) + { + return await base.BuildCredentialsAsync(appId, oAuthScope); + } + + var cert = await this.certificateProvider.GetCertificateAsync(appId); + var options = new CertificateAppCredentialsOptions() + { + AppId = appId, + ClientCertificate = cert, + OauthScope = oAuthScope, + }; + + var certificateAppCredentials = new CertificateAppCredentials(options) as AppCredentials; + return certificateAppCredentials; + } } } diff --git a/Source/CompanyCommunicator/ClientApp/package-lock.json b/Source/CompanyCommunicator/ClientApp/package-lock.json index f756ac4f2..c4d853990 100644 --- a/Source/CompanyCommunicator/ClientApp/package-lock.json +++ b/Source/CompanyCommunicator/ClientApp/package-lock.json @@ -1,6 +1,6 @@ { "name": "company-communicator", - "version": "4.1.5", + "version": "5.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3501,9 +3501,9 @@ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -3770,11 +3770,18 @@ "integrity": "sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg==" }, "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "requires": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.14.0" + }, + "dependencies": { + "follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + } } }, "axobject-query": { @@ -5453,12 +5460,12 @@ "integrity": "sha512-5pM/C1MIfoqhXa7k9PqSnrjj1SSZDakfyB1DZhdYyJoDUH+evGbsUg6/bpQapTJeSnYaj0rdzPUMeM33CvB0vw==" }, "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", "requires": { "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", + "cssnano-preset-default": "^4.0.8", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" }, @@ -5474,6 +5481,43 @@ "parse-json": "^4.0.0" } }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + } + }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -5492,6 +5536,21 @@ "json-parse-better-errors": "^1.0.1" } }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -5499,43 +5558,6 @@ } } }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, "cssnano-util-get-arguments": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", @@ -8217,11 +8239,6 @@ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, "html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -9020,14 +9037,6 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "requires": { - "html-comment-regex": "^1.1.0" - } - }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -13223,24 +13232,6 @@ "util-deprecate": "^1.0.2" } }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, "postcss-unique-selectors": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", @@ -14215,9 +14206,9 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "requires": { "boolbase": "^1.0.0" } @@ -16047,9 +16038,9 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, "to-arraybuffer": { "version": "1.0.1", diff --git a/Source/CompanyCommunicator/ClientApp/package.json b/Source/CompanyCommunicator/ClientApp/package.json index d164499ff..8cafb0c0a 100644 --- a/Source/CompanyCommunicator/ClientApp/package.json +++ b/Source/CompanyCommunicator/ClientApp/package.json @@ -1,12 +1,12 @@ { "name": "company-communicator", - "version": "4.1.5", + "version": "5.0.0", "private": true, "dependencies": { "@fluentui/react-northstar": "^0.52.0", "@microsoft/teams-js": "^1.4.2", "adaptivecards": "^1.2.0", - "axios": "^0.21.1", + "axios": "^0.21.4", "color-hash": "^1.0.3", "faker": "^4.1.0", "font-awesome": "^4.7.0", diff --git a/Source/CompanyCommunicator/Controllers/BotController.cs b/Source/CompanyCommunicator/Controllers/BotController.cs index 5609815f0..ce4e5bcee 100644 --- a/Source/CompanyCommunicator/Controllers/BotController.cs +++ b/Source/CompanyCommunicator/Controllers/BotController.cs @@ -11,6 +11,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Controllers using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Teams.Apps.CompanyCommunicator.Bot; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter; /// /// Message controller for the bot. @@ -19,7 +20,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator.Controllers [ApiController] public class BotController : ControllerBase { - private readonly BotFrameworkHttpAdapter adapter; + private readonly CompanyCommunicatorBotAdapter adapter; private readonly IBot authorBot; private readonly IBot userBot; diff --git a/Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj b/Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj index b5c4bd128..68d2eff93 100644 --- a/Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj +++ b/Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj @@ -10,16 +10,18 @@ + + - - + + - + all diff --git a/Source/CompanyCommunicator/Program.cs b/Source/CompanyCommunicator/Program.cs index 5bf9e51e0..88c5f43f3 100644 --- a/Source/CompanyCommunicator/Program.cs +++ b/Source/CompanyCommunicator/Program.cs @@ -5,7 +5,6 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator { - using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; diff --git a/Source/CompanyCommunicator/Startup.cs b/Source/CompanyCommunicator/Startup.cs index ae4ebdb6d..067a2bf75 100644 --- a/Source/CompanyCommunicator/Startup.cs +++ b/Source/CompanyCommunicator/Startup.cs @@ -5,8 +5,8 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator { + using System; using System.Net; - using global::Azure.Storage.Blobs; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Hosting; @@ -21,16 +21,18 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator using Microsoft.Graph; using Microsoft.Teams.Apps.CompanyCommunicator.Authentication; using Microsoft.Teams.Apps.CompanyCommunicator.Bot; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Adapter; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Extensions; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.ExportData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.NotificationData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.SentNotificationData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.TeamData; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Repositories.UserData; + using Microsoft.Teams.Apps.CompanyCommunicator.Common.Secrets; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.AdaptiveCard; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.CommonBot; - using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.DataQueue; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.ExportQueue; using Microsoft.Teams.Apps.CompanyCommunicator.Common.Services.MessageQueues.PrepareToSendQueue; @@ -53,7 +55,7 @@ public class Startup /// IConfiguration instance. public Startup(IConfiguration configuration) { - this.Configuration = configuration; + this.Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); } /// @@ -77,9 +79,14 @@ public void ConfigureServices(IServiceCollection services) .Configure((botOptions, configuration) => { botOptions.UserAppId = configuration.GetValue("UserAppId"); - botOptions.UserAppPassword = configuration.GetValue("UserAppPassword"); + botOptions.UserAppPassword = configuration.GetValue("UserAppPassword", string.Empty); botOptions.AuthorAppId = configuration.GetValue("AuthorAppId"); - botOptions.AuthorAppPassword = configuration.GetValue("AuthorAppPassword"); + botOptions.AuthorAppPassword = configuration.GetValue("AuthorAppPassword", string.Empty); + botOptions.UseCertificate = configuration.GetValue("UseCertificate", false); + botOptions.AuthorAppCertName = configuration.GetValue("AuthorAppCertName", string.Empty); + botOptions.UserAppCertName = configuration.GetValue("UserAppCertName", string.Empty); + botOptions.GraphAppId = configuration.GetValue("GraphAppId"); + botOptions.GraphAppCertName = configuration.GetValue("GraphAppCertName", string.Empty); }); services.AddOptions() .Configure((botFilterMiddlewareOptions, configuration) => @@ -99,12 +106,6 @@ public void ConfigureServices(IServiceCollection services) // tables exist. repositoryOptions.EnsureTableExists = true; }); - services.AddOptions() - .Configure((messageQueueOptions, configuration) => - { - messageQueueOptions.ServiceBusConnection = - configuration.GetValue("ServiceBusConnection"); - }); services.AddOptions() .Configure((dataQueueMessageOptions, configuration) => { @@ -140,10 +141,9 @@ public void ConfigureServices(IServiceCollection services) configuration.RootPath = "ClientApp/build"; }); - // Add blob client. - services.AddSingleton(sp => new BlobContainerClient( - sp.GetService().GetValue("StorageAccountConnectionString"), - Common.Constants.BlobContainerName)); + var useManagedIdentity = this.Configuration.GetValue("UseManagedIdentity"); + services.AddBlobClient(useManagedIdentity); + services.AddServiceBusClient(useManagedIdentity); // The bot needs an HttpClient to download and upload files. services.AddHttpClient(); @@ -174,6 +174,9 @@ public void ConfigureServices(IServiceCollection services) // Add draft notification preview services. services.AddSingleton(); + string keyVaultUrl = this.Configuration.GetValue("KeyVault:Url"); + services.AddSecretsProvider(keyVaultUrl); + // Add microsoft graph services. services.AddScoped(); services.AddScoped(); @@ -190,6 +193,7 @@ public void ConfigureServices(IServiceCollection services) services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); } /// diff --git a/Source/CompanyCommunicator/appsettings.json b/Source/CompanyCommunicator/appsettings.json index 64f2446d2..ab6f3f1b1 100644 --- a/Source/CompanyCommunicator/appsettings.json +++ b/Source/CompanyCommunicator/appsettings.json @@ -2,8 +2,8 @@ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "[AzureAD Tenant Id]", - "ClientId": "[AzureAD Client Id]", - "ClientSecret": "[AzureAD Client Secret]", + "ClientId": "[GraphAppId]", + "ClientSecret": "[GraphAppPassword]", "ApplicationIdUri": "[AzureAD Application Id URI]", "ValidIssuers": "https://login.microsoftonline.com/TENANT_ID/v2.0,https://sts.windows.net/TENANT_ID/" }, @@ -19,18 +19,32 @@ "UserAppPassword": "[UserAppPassword]", "AuthorAppId": "[AuthorAppId]", "AuthorAppPassword": "[AuthorAppPassword]", + "GraphAppId": "[GraphAppId]", + "GraphAppPassword": "[GraphAppPassword]", "ServiceBusConnection": "[Service Bus Connection]", "StorageAccountConnectionString": "[Storage Account Connection String]", "DisableCreatorUpnCheck": "false", "AuthorizedCreatorUpns": "[upn list]", "DisableTenantFilter": "false", "AllowedTenants": "[tenant list]", + "WEBSITE_LOAD_CERTIFICATES": "*", + "UseCertificate": "true", + "AuthorAppCertName": "[AuthorAppCertName]", + "UserAppCertName": "[UserAppCertName]", + "GraphAppCertName": "[GraphAppCertName]", "ForceCompleteMessageDelayInSeconds": "86400", + "UseManagedIdentity": "true", + "ServiceBusNamespace": "[Service Bus Namespace]", + "StorageAccountName": "[Storage Account Name]", + "KeyVault": { + "Url": "https://{keyVaultName}.vault.azure.net" + }, "ApplicationInsights": { "InstrumentationKey": "" }, "i18n": { "DefaultCulture": "en-US", "SupportedCultures": "en-US" - } + }, + "GroupsGraphScope": "GroupMember.Read.All" } \ No newline at end of file diff --git a/Source/Test/CompanyCommunicator.Prep.Func.Test/Export/Activities/HandleExportFailureActivityTest.cs b/Source/Test/CompanyCommunicator.Prep.Func.Test/Export/Activities/HandleExportFailureActivityTest.cs index 9c79b71a6..4bf3b4553 100644 --- a/Source/Test/CompanyCommunicator.Prep.Func.Test/Export/Activities/HandleExportFailureActivityTest.cs +++ b/Source/Test/CompanyCommunicator.Prep.Func.Test/Export/Activities/HandleExportFailureActivityTest.cs @@ -37,6 +37,7 @@ public class HandleExportFailureActivityTest private readonly Mock> botOptions = new Mock>(); private readonly Mock botAdapter = new Mock(); private readonly Mock> localizer = new Mock>(); + private readonly Mock blobContainerClient = new Mock(); /// /// Constructor test for all parameters. diff --git a/Source/Test/CompanyCommunicator.Prep.Func.Test/Export/Activities/UploadActivityTest.cs b/Source/Test/CompanyCommunicator.Prep.Func.Test/Export/Activities/UploadActivityTest.cs index 455c40383..3726fa733 100644 --- a/Source/Test/CompanyCommunicator.Prep.Func.Test/Export/Activities/UploadActivityTest.cs +++ b/Source/Test/CompanyCommunicator.Prep.Func.Test/Export/Activities/UploadActivityTest.cs @@ -34,6 +34,7 @@ public class UploadActivityTest private readonly Mock storageClientFactory = new Mock(); private readonly Mock userDataStream = new Mock(); private readonly Mock> localizer = new Mock>(); + private readonly Mock blobContainerClientMock = new Mock(); private readonly string fileName = "fileName"; /// diff --git a/Wiki/Data-stores.md b/Wiki/Data-stores.md index 408cce2ca..0ef20757d 100644 --- a/Wiki/Data-stores.md +++ b/Wiki/Data-stores.md @@ -1,6 +1,7 @@ The app uses the following data stores: 1. Azure Storage Account 1. Application Insights +1. Azure Key vault All these resources are created in your Azure subscription. None are hosted directly by Microsoft. @@ -144,3 +145,18 @@ The Export Collection stores the export data. ## Application Insights See [Telemetry](Telemetry) + +## Azure Key vault + +The key vault stores the following data. + +| Value | Description +| --- | --- +| AuthorAppPassword | The client secret key of author bot. +| UserAppPassword | The client secret key of user bot. +| GraphAppSecret | The client secret key of graph app. +| Author app certificate | The Key vault certificate of author bot. +| User app certificate | The Key vault certificate of user bot. +| Graph app certificate | The Key vault certificate of graph app. +| ServiceBusConnectionString | The connection string of Service Bus Namespace. +| StorageAccountConnectionString | The connection string of Storage Account. diff --git a/Wiki/Deployment-guide-certificate.md b/Wiki/Deployment-guide-certificate.md new file mode 100644 index 000000000..a7ad1fd5f --- /dev/null +++ b/Wiki/Deployment-guide-certificate.md @@ -0,0 +1,358 @@ +- Deployment Guide + - [Prerequisites](#prerequisites) + - [Steps](#Deployment-Steps) + - [Register AD Application](#1-register-azure-ad-application) + - [Deploy to Azure subscription](#2-deploy-to-your-azure-subscription) + - [Set-up Authentication](#3-set-up-authentication) + - [Add Permissions to your app](#4-add-permissions-to-your-app) + - [Create the Teams app packages](#5-create-the-teams-app-packages) + - [Install the apps in Microsoft Teams](#6-install-the-apps-in-microsoft-teams) + - [Troubleshooting](#troubleshooting) +- - - + +# Prerequisites +The recommendation is to use [Deployment guide using powershell](Deployment-guide-powershell). + +To begin, you will need: +* An Azure subscription where you can create the following kinds of resources: + * App Service + * App Service Plan + * Bot Channels Registration + * Azure Function + * Azure Storage Account + * Service Bus + * Application Insights + * Azure Key vault +* An role to assign roles in Azure RBAC. To check if you have permission to do this, + * Goto the subscription page in Azure portal. Then, goto Access Control(IAM) and click on `View my access` button. + * Click on your `role` and in search permissions text box, search for `Microsoft.Authorization/roleAssignments/Write`. + * If your current role does not have the permission, then you can grant yourself the built in role `User Access Administrator` or create a custom role. + * Please follow this [link](https://docs.microsoft.com/en-us/azure/role-based-access-control/custom-roles#steps-to-create-a-custom-role) to create a custom role. Use this action `Microsoft.Authorization/roleAssignments/Write` in the custom role to assign roles in Azure RBAC. +* A team with the users who will be sending messages with this app. (You can add or remove team members later!) +* A copy of the Company Communicator app GitHub repo (https://github.com/OfficeDev/microsoft-teams-company-communicator-app) + +> **NOTE:** If you plan to use a custom domain name instead of relying on Azure Front Door, read the instructions [here](Custom-domain-option) first. + +- - - + +# Deployment Steps + +## 1. Register Azure AD application + +Register three Azure AD application in your tenant's directory: one for author bot, one for user bot and another for graph app. + +1. Log in to the Azure Portal for your subscription, and go to the [App registrations](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps) blade. + +1. Click **New registration** to create an Azure AD application. + - **Name**: Name of your Teams App - if you are following the template for a default deployment, we recommend "Company Communicator User". + - **Supported account types**: Select "Accounts in any organizational directory" (*refer image below*). + - Leave the "Redirect URI" field blank for now. + + ![Azure AD app registration page](images/multitenant_app_creation.png) + +1. Click **Register** to complete the registration. + +1. When the app is registered, you'll be taken to the app's "Overview" page. Copy the **Application (client) ID**; we will need it later. Verify that the "Supported account types" is set to **Multiple organizations**. + + ![Azure AD app overview page](images/multitenant_app_overview_1.png) + +1. Go back to "App registrations", then repeat step no. 2 to create another Azure AD application for the author bot. + - **Name**: Name of your Teams App - if you are following the template for a default deployment, we recommend "Company Communicator Author". + - **Supported account types**: Select "Accounts in any organizational directory". + - Leave the "Redirect URI" field blank for now. + +1. Go back to "App registrations", then repeat step no. 2 to create another Azure AD application for the Microsoft Graph app. + - **Name**: Name of your Teams App - if you are following the template for a default deployment, we recommend "Company Communicator App". + - **Supported account types**: Select "Accounts in this organizational directory only(Default Directory only - Single tenant)". + - Leave the "Redirect URI" field blank for now. + + + At this point you should have the following 4 values: + 1. Application (client) ID for the user bot. + 2. Directory (tenant) ID. + 3. Application (client) ID for the author bot. + 4. Application (client) ID for the Microsoft Graph App. + + We recommend that you copy the values, we will need them later. + + ![Azure AD app overview page](images/multitenant_app_overview_2.png) + +## 2. Deploy to your Azure subscription +1. Click on the **Deploy to Azure** button below. + + [![Deploy to Azure](https://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FOfficeDev%2Fmicrosoft-teams-company-communicator-app%2Fmaster%2FDeployment%2Fazuredeploywithcert.json) + +1. When prompted, log in to your Azure subscription. + +1. Azure will create a "Custom deployment" based on the Company Communicator ARM template and ask you to fill in the template parameters. + + > **Note:** Please ensure that you don't use underscore (_) or space in any of the field values otherwise the deployment may fail. + +1. Select a subscription and a resource group. + * We recommend creating a new resource group. + * The resource group location MUST be in a datacenter that supports all the following: + * Storage Accounts + * Application Insights + * Azure Functions + * Service Bus + * App Service + + For an up-to-date list of datacenters that support the above, click [here](https://azure.microsoft.com/en-us/global-infrastructure/services/?products=storage,app-service,monitor,service-bus,functions) + +1. Enter a **Base Resource Name**, which the template uses to generate names for the other resources. + * The `[Base Resource Name]` must be available. For example, if you select `contosocommunicator` as the base name, the name `contosocommunicator` must be available (not taken); otherwise, the deployment will fail with a Conflict error. + * Remember the base resource name that you selected. We will need it later. + +1. Update the following fields in the template: + 1. **User Client ID**: The application (client) ID of the Microsoft Teams user bot app. (from Step 1) + 2. **User App Certificate Name**: Provide the name for creating the new certificate of user bot Azure AD app in Azure Key vault + 3. **Tenant Id**: The tenant ID. (from Step 1) + 4. **Author Client ID**: The application (client) ID of the Microsoft Teams author bot app. (from Step 1) + 5. **Author App Certificate Name**: Provide the name for creating the new certificate of author bot Azure AD app in Azure Key vault + 6. **Microsoft Graph App Client ID**: The application (client) ID of the Microsoft Graph Azure AD app. (from Step 1) + 7. **Microsoft Graph App Certificate Name**: Provide the name for creating the new certificate of Microsoft Graph Azure AD app in Azure Key vault + 8. **Proactively Install User App [Optional]**: Default value is `true`. You may set it to `false` if you want to disable the feature. + 9. **User App ExternalId [Optional]**: Default value is `148a66bb-e83d-425a-927d-09f4299a9274`. This **MUST** be the same `id` that is in the Teams app manifest for the user app. + 10. **Service Bus Web App Role Name Guid [Optional]**: Default value is `958380b3-630d-4823-b933-f59d92cdcada`. This **MUST** be the same `id` per app deployment. + + > **Note:** Make sure to keep the same values for an upgrade. Please change the role name GUIDs in case of another Company Communicator Deployment in same subscription. + + 11. **Service Bus Prep Func Role Name Guid [Optional]**: Default value is `ce6ca916-08e9-4639-bfbe-9d098baf42ca`. This **MUST** be the same `id` per app deployment. + 12. **Service Bus Send Func Role Name Guid [Optional]**: Default value is `960365a2-c7bf-4ff3-8887-efa86fe4a163`. This **MUST** be the same `id` per app deployment. + 13. **Service Bus Data Func Role Name Guid [Optional]**: Default value is `d42703bc-421d-4d98-bc4d-cd2bb16e5b0a`. This **MUST** be the same `id` per app deployment. + 14. **Storage Account Web App Role Name Guid [Optional]**: Default value is `edd0cc48-2cf7-490e-99e8-131311e42030`. This **MUST** be the same `id` per app deployment. + 15. **Storage Account Prep Func Role Name Guid [Optional]**: Default value is `9332a9e9-93f4-48d9-8121-d279f30a732e`. This **MUST** be the same `id` per app deployment. + 16. **Storage Account Data Func Role Name Guid [Optional]**: Default value is `5b67af51-4a98-47e1-9d22-745069f51a13`. This **MUST** be the same `id` per app deployment. + 17. **DefaultCulture [Optional]**: By default the application uses `en-US` locale. You can choose the locale from the list, if you wish to use the app in different locale.Also, you may add/update the resources for other locales and update this configuration if desired. + 18. **SupportedCultures [Optional]**: This is the list of locales that application supports currently.You may add/update the resources for other locales and update this configuration if desired. + + + > **Note:** Make sure that the values are copied as-is, with no extra spaces. The template checks that GUIDs are exactly 36 characters. + + > **Note:** If your Azure subscription is in a different tenant than the tenant where you want to install the Teams App, please update the `Tenant Id` field with the tenant where you want to install the Teams App. + +1. Update the "Sender UPN List", which is a semicolon-delimited list of users (Authors) who will be allowed to send messages using the Company Communicator. + * For example, to allow Megan Bowen (meganb@contoso.com) and Adele Vance (adelev@contoso.com) to send messages, set this parameter to `meganb@contoso.com;adelev@contoso.com`. + * You can change this list later by going to the App Service's "Configuration" blade. + +1. If you wish to change the app name, description, and icon from the defaults, modify the corresponding template parameters. + +1. Agree to the Azure terms and conditions by clicking on the check box "I agree to the terms and conditions stated above" located at the bottom of the page. + +1. Click on "Purchase" to start the deployment. + +1. Wait for the deployment to finish. You can check the progress of the deployment from the "Notifications" pane of the Azure Portal. It may take **up to an hour** for the deployment to finish. + + > If the deployment fails, see [this section](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Troubleshooting#1-code-deployment-failure) of the Troubleshooting guide. + +1. Once the deployment is successfully completed, go to the deployment's "Outputs" tab, and note down the follwing values. We will need them later. + * **keyVaultName:** This is the Key Vault Name for the Company Communicator app. For the following steps, it will be referred to as `%keyVaultName%`. + * **authorBotId:** This is the Microsoft Application ID for the Company Communicator app. For the following steps, it will be referred to as `%authorBotId%`. + * **userBotId:** This is the Microsoft Application ID for the Company Communicator app. For the following steps, it will be referred to as `%userBotId%`. + * **appDomain:** This is the base domain for the Company Communicator app. For the following steps, it will be referred to as `%appDomain%`. + +> **IMPORTANT:** If you plan to use a custom domain name instead of relying on Azure Front Door, read the instructions [here](Custom-domain-option) before continuing any further. + +## 3. Create Key vault Certificate +1. On the Key vault page, select **Certificates**. +3. Click on **Generate/Import**. +3. On the **Create a certificate** screen choose the following values: + - **Method of Certificate Creation**: Generate. + - **Certificate Name**: AuthorAppCertificateName. This should be the same value given in step no. 2. + - **Subject**: CN=`%appDomain%`. + - Leave the other values to their defaults. (By default, if you don't specify anything special in Advanced policy, it'll be usable as a client auth certificate.) +4. Click **Create**. + +Once that you receive the message that the certificate has been successfully created, you may click on it on the list. You can then see some of the properties. If you click on the current version, you can see the value you specified in the previous step. + +![Certificate properties](images/create-certificate.png) + +Please repeat the steps for User bot certificate and Microsoft Graph app certificate. + +## 4. Export Certificate from Key Vault + +Download the certificate for all apps i.e. Author Bot, User Bot, Microsoft Graph app. + +You can download by Clicking "Download in CER format" button. +![Export Certificate](images/export-cert.png) + +## 5. Upload Certificate Azure AD App + +1. Go to **App Registrations** page [here](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps) and open the Microsoft Graph Azure AD app you created (in Step 1) from the application list. + +2. On the side rail in the Manage section, navigate to the "Certificates & secrets" section. In the Certificates section, click on "Upload certificate". Select the certificate file downloaded in Step 4 for the Graph Azure AD app and click on Add. + +3. Please repeat the same for Author app and User app and upload the respective certificate downloaded in Step 3. + +## 6. Import Certificates from Key Vault to app and functions. + +1. Go to **App Service** page created as part of this deployment. +1. From the left navigation of your app, **select TLS/SSL settings > Private Key Certificates (.pfx) > Import Key Vault Certificate** +![Import Key Vault Certificate](images/import-key-vault-cert.png) +1. Use the following table to help you select the certificate. + + | Setting | Description | + |-|-| + | Subscription | The subscription that the Key Vault belongs to. | + | Key Vault | The vault with the certificate you want to import. | + | Certificate | Select from the list of PKCS12 certificates in the vault. All PKCS12 certificates in the vault are listed with their thumbprints, but not all are supported in App Service. | + +1. When the operation completes, you see the certificate in the **Private Key Certificates** list. +![Import Key Vault certificate finished](images/import-app-service-cert-finished.png) + +1. Please import all the certificates from the Key Vault. +1. Repeat the above steps for the function apps. + +> NOTE : If you update your certificate in Key Vault with a new certificate, App Service automatically syncs your certificate within 24 hours. + +## 7. Set-up Authentication + +1. Note that you have the `%authorBotId%`, `%userBotId%` and `%appDomain%` values from the previous step (Step 2). + + > If do not have these values, refer [this section](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Troubleshooting#2-forgetting-the-botId-or-appDomain) of the Troubleshooting guide for steps to get these values. + +1. Go to **App Registrations** page [here](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps) and open the Microsoft Graph Azure AD app you created (in Step 1) from the application list. + + > NOTE: This step is to set-up authentication for Microsoft Graph Azure AD app. + +1. Under **Manage**, click on **Authentication** to bring up authentication settings. + + 1. Add a new entry to **Redirect URIs**: + - **Type**: Web + - **Redirect URI**: Enter `https://%appDomain%/signin-simple-end` for the URL e.g. `https://appName.azurefd.net/signin-simple-end` + + 1. Under **Implicit grant**, check **ID tokens**. + + 1. Click **Save** to commit your changes. + +1. Back under **Manage**, click on **Expose an API**. + + 1. Click on the **Set** link next to **Application ID URI**, and change the value to `api://%appDomain%` e.g. `api://appName.azurefd.net`. + + 1. Click **Save** to commit your changes. + + 1. Click on **Add a scope**, under **Scopes defined by this API**. In the flyout that appears, enter the following values: + * **Scope name:** access_as_user + * **Who can consent?:** Admins and users + * **Admin and user consent display name:** Access the API as the current logged-in user + * **Admin and user consent description:** Access the API as the current logged-in user + + 1. Click **Add scope** to commit your changes. + + 1. Click **Add a client application**, under **Authorized client applications**. In the flyout that appears, enter the following values: + * **Client ID**: `5e3ce6c0-2b1f-4285-8d4b-75ee78787346` + * **Authorized scopes**: Select the scope that ends with `access_as_user`. (There should only be 1 scope in this list.) + + 1. Click **Add application** to commit your changes. + + 1. **Repeat the previous two steps**, but with client ID = `1fec8e78-bce4-4aaf-ab1b-5451cc387264`. After this step you should have **two** client applications (`5e3ce6c0-2b1f-4285-8d4b-75ee78787346` and `1fec8e78-bce4-4aaf-ab1b-5451cc387264`) listed under **Authorized client applications**. + +1. Back under **Manage**, click on **Manifest**. + + 1. In the editor that appears, find the `optionalClaims` property in the JSON Azure AD application manifest, and replace it with the following block: + ``` + "optionalClaims": { + "idToken": [], + "accessToken": [ + { + "name": "upn", + "source": null, + "essential": false, + "additionalProperties": [] + } + ], + "saml2Token": [] + }, + ``` + + 2. Click **Save** to commit your changes. + +## 8. Add Permissions to your Microsoft Graph Azure AD app + +Continuing from the Microsoft Graph Azure AD app registration page where we ended Step 3. + +1. Select **API Permissions** blade from the left hand side. + +2. Click on **Add a permission** button to add permission to your app. + +3. In Microsoft APIs under Select an API label, select the particular service and give the following permissions, + + * Under **Commonly used Microsoft APIs**, + + * Select “Microsoft Graph”, then select **Delegated permissions** and check the following permissions, + 1. **GroupMember.Read.All** + 2. **AppCatalog.Read.All** + + * then select **Application permissions** and check the following permissions, + 1. **GroupMember.Read.All** + 2. **User.Read.All** + 3. **TeamsAppInstallation.ReadWriteForUser.All** + + * Click on **Add Permissions** to commit your changes. + + ![Azure AD API permissions](images/multitenant_app_permissions_1.png) + ![Azure AD API permissions](images/multitenant_app_permissions_2.png) + + > Please refer to [Solution overview](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Solution-overview#microsoft-graph-api) for more details about the above permissions. + +4. If you are logged in as the Global Administrator, click on the “Grant admin consent for %tenant-name%” button to grant admin consent, else inform your Admin to do the same through the portal. +
+ Alternatively you may follow the steps below: + - Prepare link - https://login.microsoftonline.com/common/adminconsent?client_id=%appId%. Replace the `%appId%` with the `Application (client) ID` of Microsoft Graph Azure AD app (from above). + - Global Administrator can grant consent using the link above. + +## 9. Create the Teams app packages + +Company communicator app comes with 2 applications – Author, User. The Author application is intended for employees who create and send messages in the organization, and the User application is intended for employees who receive the messages. + +Create two Teams app packages: one to be installed to an Authors team and other for recipients to install personally and/or to teams. + +1. Make sure you have cloned the app repository locally. + +1. Open the `Manifest\manifest_authors.json` file in a text editor. + +1. Change the placeholder fields in the manifest to values appropriate for your organization. + * `developer.name` ([What's this?](https://docs.microsoft.com/en-us/microsoftteams/platform/resources/schema/manifest-schema#developer)) + * `developer.websiteUrl` + * `developer.privacyUrl` + * `developer.termsOfUseUrl` + +1. Change the `<>` placholder in the configurationUrl setting to be the `%appDomain%` value e.g. "`https://appName.azurefd.net/configtab`". + +1. Change the `<>` placeholder in the botId setting to be the `%authorBotId%` value - this is your author Azure AD application's ID from above. This is the same GUID that you entered in the template under "Author Client ID". Please note that there are two places in the manifest (for authors) where you will need to update Bot ID. + +1. Change the `<>` placeholder in the validDomains setting to be the `%appDomain%` value e.g. "`appName.azurefd.net`". + +1. Change the `<>` placeholder in the id setting of the webApplicationInfo section to be the `%authorBotId%` value. Change the `<>` placeholder in the resource setting of the webApplicationInfo section to be the `%appDomain%` value e.g. "`api://appName.azurefd.net`". + +1. Copy the `manifest_authors.json` file to a file named `manifest.json`. + +1. Create a ZIP package with the `manifest.json`,`color.png`, and `outline.png`. The two image files are the icons for your app in Teams. + * Name this package `company-communicator-authors.zip`, so you know that this is the app for the author teams. + * Make sure that the 3 files are the _top level_ of the ZIP package, with no nested folders. + ![image10](images/file-explorer.png) + +1. Delete the `manifest.json` file. + +Repeat the steps above but with the file `Manifest\manifest_users.json` and use `%userBotId%` for `<>` placeholder. Note: you will not need to change anything for the configurationUrl or webApplicationInfo section because the recipients app does not have the configurable tab. Name the resulting package `company-communicator-users.zip`, so you know that this is the app for the recipients. + +## 10. Install the apps in Microsoft Teams + +1. Install the authors app (the `company-communicator-authors.zip` package) to your team of message authors. + * Note that even if non-authors install the app, the UPN list in the app configuration will prevent them from accessing the message authoring experience. Only the users in the sender UPN list will be able to compose and send messages. + * If your tenant has sideloading apps enabled, you can install your app by following the instructions [here](https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/apps/apps-upload#load-your-package-into-teams). + +2. Add the configurable tab to the team of authors, so that they can compose and send messages. + +3. [Upload](https://docs.microsoft.com/en-us/microsoftteams/tenant-apps-catalog-teams) the User app to your tenant's app catalog so that it is available for everyone in your tenant to install. +> **IMPORTANT:** Proactive app installation will work only if you upload the User app to your tenant's app catalog. + +4. Install the User app (the `company-communicator-users.zip` package) to the users and teams that will be the target audience. +> If `proactiveAppInstallation` is enabled, you may skip this step. The service will install the app for all the recipients when authors send a message. + +> **NOTE:** If you are deploying a version of Company Communicator prior to version 4, do NOT use app permission policies to restrict the authors app to the members of the authors team. Microsoft Teams does not support applying different policies to the same bot via two different app packages. + +--- + +# Troubleshooting +Please check the [Troubleshooting](Troubleshooting) guide. diff --git a/Wiki/Deployment-guide-powershell.md b/Wiki/Deployment-guide-powershell.md index dee67e1ea..44ea80abb 100644 --- a/Wiki/Deployment-guide-powershell.md +++ b/Wiki/Deployment-guide-powershell.md @@ -1,4 +1,4 @@ -- [Deployment Guide](#outlook-web-service-ows) +- Deployment Guide **RECOMMENDED** - [Prerequisites](#prerequisites) - [Steps](#Deployment-Steps) - [Deploy to your Azure subscription](#1-deploy-to-your-azure-subscription) @@ -9,7 +9,7 @@ - - - # Prerequisites -To begin, you will need: +To begin, you will need: * An Azure subscription where you can create the following kinds of resources: * App Service @@ -19,6 +19,12 @@ To begin, you will need: * Azure Storage Account * Service Bus * Application Insights + * Azure Key vault +* An role to assign roles in Azure RBAC. To check if you have permission to do this, + * Goto the subscription page in Azure portal. Then, goto Access Control(IAM) and click on `View my access` button. + * Click on your `role` and in search permissions text box, search for `Microsoft.Authorization/roleAssignments/Write`. + * If your current role does not have the permission, then you can grant yourself the built in role `User Access Administrator` or create a custom role. + * Please follow this [link](https://docs.microsoft.com/en-us/azure/role-based-access-control/custom-roles#steps-to-create-a-custom-role) to create a custom role. Use this action `Microsoft.Authorization/roleAssignments/Write` in the custom role to assign roles in Azure RBAC. * A team with the users who will be sending messages with this app. (You can add and remove team members later!) * A copy of the Company Communicator app GitHub repo ([https://github.com/OfficeDev/microsoft-teams-company-communicator-app](https://github.com/OfficeDev/microsoft-teams-company-communicator-app)) @@ -79,6 +85,7 @@ To begin, you will need: - `subscriptionId` - Azure subscription to deploy the solution to (MUST be associated with the Azure AD of the Office 365 tenant that you wish to deploy this solution to.) e.g. 22f602c4-1b8f-46df-8b73-45d7bdfbf58e. - `subscriptionTenantId` - Id of the tenant to deploy to (If you are not sure how to get Tenant ID, please check Azure Active Directory in Azure Portal. Under Manage, click Properties. The tenant ID is shown in the Directory ID box). e.g 98f3ece2-3a5a-428b-aa4f-4c41b3f6eef0. Tenant ID is also available in the `Overview` section". + - `userObjectId` - Object Id of the user to deploy to (If you are not sure how to get Object ID, please check Azure Active Directory in Azure Portal. Under Manage, click Users and select the appropriate user. The Object ID is shown in the Identity section). e.g 98f3ece2-3a5a-428b-aa4f-4c41b3f6eef0. - `resourceGroupName` - Name for a new resource group to deploy the solution to - the script will create this resource group. e.g. CompanyCommunicatorRG. - `region` - Azure region in which to create the resources. The internal name should be used e.g. eastus. Run the following command in Powershell to list internal names. ``` @@ -94,14 +101,37 @@ To begin, you will need: For example, to allow Megan Bowen ([meganb@contoso.com](mailto:meganb@contoso.com)) and Adele Vance ([adelev@contoso.com](mailto:adelev@contoso.com)) to send messages, set this parameter to `meganb@contoso.com;adelev@contoso.com`. You can change this list later by going to the `App Service > Configuration` blade. + - `isUpgrade` - If this is an upgrade for old version of the app template, then value should be true. Otherwise, false is default (First-time deployment). + + - `useCertificate` - If certificate authentication is being used, then value should be true. Otherwise, false is default (Client-secret will be used). + + - `authorAppCertName` - If certificate authentication is being used, then give the name for the new certificate of author bot Azure AD app to be created in Azure Key vault. + + - `userAppCertName` - If certificate authentication is being used, then give the name for the new certificate of user bot Azure AD app to be created in Azure Key vault. + + - `graphAppCertName` - If certificate authentication is being used, then give the name for the new certificate of graph app Azure AD app to be created in Azure Key vault. + - `customDomainOption` - How the app will be hosted on a domain that is not \*.azurewebsites.net. Azure Front Door is an easy option that the template can set up automatically, but it comes with ongoing monthly costs. > **NOTE**: If you plan to use a custom domain name instead of relying on Azure Front Door, read the instructions [here](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Custom-domain-option) first. - `proactivelyInstallUserApp`: If proactive app installation should be enabled. Default is true. If enabled, the application will proactively install the User bot for recipients. - `userAppExternalId`: Default value is 148a66bb-e83d-425a-927d-09f4299a9274. This is the external Id provided in the User app manifest. + - `serviceBusWebAppRoleNameGuid`: Default value is `958380b3-630d-4823-b933-f59d92cdcada`. This **MUST** be the same `id` per app deployment. + + > **Note:** Make sure to keep the same values for an upgrade. Please change the role name GUIDs in case of another Company Communicator Deployment in same subscription. + + - `serviceBusPrepFuncRoleNameGuid`: Default value is `ce6ca916-08e9-4639-bfbe-9d098baf42ca`. This **MUST** be the same `id` per app deployment. + - `serviceBusSendFuncRoleNameGuid`: Default value is `960365a2-c7bf-4ff3-8887-efa86fe4a163`. This **MUST** be the same `id` per app deployment. + - `serviceBusDataFuncRoleNameGuid`: Default value is `d42703bc-421d-4d98-bc4d-cd2bb16e5b0a`. This **MUST** be the same `id` per app deployment. + - `storageAccountWebAppRoleNameGuid`: Default value is `edd0cc48-2cf7-490e-99e8-131311e42030`. This **MUST** be the same `id` per app deployment. + - `storageAccountPrepFuncRoleNameGuid`: Default value is `9332a9e9-93f4-48d9-8121-d279f30a732e`. This **MUST** be the same `id` per app deployment. + - `storageAccountDataFuncRoleNameGuid`: Default value is `5b67af51-4a98-47e1-9d22-745069f51a13`. This **MUST** be the same `id` per app deployment. - `defaultCulture`: By default the application uses `en-US` locale. You can choose another locale from the list [here](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Localization), if you wish to use the app in different locale. - `hostingPlanSku`: The pricing tier for the hosting plan. Defaul value: Standard. You may choose between Basic, Standard and Premium. - - `hostingPlanSize`: The size of the hosting plan (small - 1, medium - 2, or large - 3). Default value: 1 + - `hostingPlanSize`: The size of the hosting plan (small - 1, medium - 2, or large - 3). Default value: 2 + + > **Note:** The default value is 2 to minimize the chances of an error during app deployment. After deployment you can choose to change the size of the hosting plan. + - `gitRepoUrl` - The URL to the GitHub repository to deploy. Default value: [https://github.com/OfficeDev/microsoft-teams-company-communicator-app.git](https://github.com/OfficeDev/microsoft-teams-company-communicator-app.git) - `gitBranch` - The branch of the GitHub repository to deploy. Default value: master - `appDisplayName` - The app (and bot) display name. Default value:Company Communicator. diff --git a/Wiki/Deployment-guide.md b/Wiki/Deployment-guide.md index 766975d3e..df8991946 100644 --- a/Wiki/Deployment-guide.md +++ b/Wiki/Deployment-guide.md @@ -1,5 +1,5 @@ -- [Deployment Guide](#outlook-web-service-ows) - - [Prerequisites](#prerequisites) +- Deployment Guide + - [Prerequisites](#prerequisites) - [Steps](#Deployment-Steps) - [Register AD Application](#1-register-azure-ad-application) - [Deploy to Azure subscription](#2-deploy-to-your-azure-subscription) @@ -11,6 +11,9 @@ - - - # Prerequisites +The recommendation is to use [Deployment guide using powershell](Deployment-guide-powershell). + + To begin, you will need: * An Azure subscription where you can create the following kinds of resources: * App Service @@ -20,6 +23,12 @@ To begin, you will need: * Azure Storage Account * Service Bus * Application Insights + * Azure Key vault +* An role to assign roles in Azure RBAC. To check if you have permission to do this, + * Goto the subscription page in Azure portal. Then, goto Access Control(IAM) and click on `View my access` button. + * Click on your `role` and in search permissions text box, search for `Microsoft.Authorization/roleAssignments/Write`. + * If your current role does not have the permission, then you can grant yourself the built in role `User Access Administrator` or create a custom role. + * Please follow this [link](https://docs.microsoft.com/en-us/azure/role-based-access-control/custom-roles#steps-to-create-a-custom-role) to create a custom role. Use this action `Microsoft.Authorization/roleAssignments/Write` in the custom role to assign roles in Azure RBAC. * A team with the users who will be sending messages with this app. (You can add or remove team members later!) * A copy of the Company Communicator app GitHub repo (https://github.com/OfficeDev/microsoft-teams-company-communicator-app) @@ -31,12 +40,12 @@ To begin, you will need: ## 1. Register Azure AD application -Register two Azure AD application in your tenant's directory: one for author bot, and another for user bot. +Register three Azure AD application in your tenant's directory: one for author bot, one for user bot and another for graph app. 1. Log in to the Azure Portal for your subscription, and go to the [App registrations](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps) blade. 1. Click **New registration** to create an Azure AD application. - - **Name**: Name of your Teams App - if you are following the template for a default deployment, we recommend "Company Communicator". + - **Name**: Name of your Teams App - if you are following the template for a default deployment, we recommend "Company Communicator User". - **Supported account types**: Select "Accounts in any organizational directory" (*refer image below*). - Leave the "Redirect URI" field blank for now. @@ -59,13 +68,20 @@ Register two Azure AD application in your tenant's directory: one for author bot - **Supported account types**: Select "Accounts in any organizational directory". - Leave the "Redirect URI" field blank for now. +1. Go back to "App registrations", then repeat steps 2-5 to create another Azure AD application for the Microsoft Graph app. + - **Name**: Name of your Teams App - if you are following the template for a default deployment, we recommend "Company Communicator App". + - **Supported account types**: Select "Accounts in this organizational directory only(Default Directory only - Single tenant)". + - Leave the "Redirect URI" field blank for now. + - At this point you should have the following 5 values: + At this point you should have the following 7 values: 1. Application (client) ID for the user bot. 2. Client secret for the user bot. 3. Directory (tenant) ID. 4. Application (client) Id for the author bot. 5. Client secret for the author bot. + 6. Application (client) Id for the Microsoft Graph App. + 7. Client secret for the Microsoft Graph App. We recommend that you copy the values, we will need them later. @@ -103,10 +119,22 @@ Register two Azure AD application in your tenant's directory: one for author bot 3. **Tenant Id**: The tenant ID. (from Step 1) 4. **Author Client ID**: The application (client) ID of the Microsoft Teams author bot app. (from Step 1) 5. **Author Client Secret**: The client secret of the Microsoft Teams author bot app. (from Step 1) - 6. **Proactively Install User App [Optional]**: Default value is `true`. You may set it to `false` if you want to disable the feature. - 7. **User App ExternalId [Optional]**: Default value is `148a66bb-e83d-425a-927d-09f4299a9274`. This **MUST** be the same `id` that is in the Teams app manifest for the user app. - 8. **DefaultCulture [Optional]**: By default the application uses `en-US` locale. You can choose the locale from the list, if you wish to use the app in different locale.Also, you may add/update the resources for other locales and update this configuration if desired. - 9. **SupportedCultures [Optional]**: This is the list of locales that application supports currently.You may add/update the resources for other locales and update this configuration if desired. + 6. **Microsoft Graph App Client ID**: The application (client) ID of the Microsoft Graph Azure AD app. (from Step 1) + 7. **Microsoft Graph App Secret**: The client secret of the Microsoft Graph Azure AD app. (from Step 1) + 8. **Proactively Install User App [Optional]**: Default value is `true`. You may set it to `false` if you want to disable the feature. + 9. **User App ExternalId [Optional]**: Default value is `148a66bb-e83d-425a-927d-09f4299a9274`. This **MUST** be the same `id` that is in the Teams app manifest for the user app. + 10. **Service Bus Web App Role Name Guid [Optional]**: Default value is `958380b3-630d-4823-b933-f59d92cdcada`. This **MUST** be the same `id` per app deployment. + + > **Note:** Make sure to keep the same values for an upgrade. Please change the role name GUIDs in case of another Company Communicator Deployment in same subscription. + + 11. **Service Bus Prep Func Role Name Guid [Optional]**: Default value is `ce6ca916-08e9-4639-bfbe-9d098baf42ca`. This **MUST** be the same `id` per app deployment. + 12. **Service Bus Send Func Role Name Guid [Optional]**: Default value is `960365a2-c7bf-4ff3-8887-efa86fe4a163`. This **MUST** be the same `id` per app deployment. + 13. **Service Bus Data Func Role Name Guid [Optional]**: Default value is `d42703bc-421d-4d98-bc4d-cd2bb16e5b0a`. This **MUST** be the same `id` per app deployment. + 14. **Storage Account Web App Role Name Guid [Optional]**: Default value is `edd0cc48-2cf7-490e-99e8-131311e42030`. This **MUST** be the same `id` per app deployment. + 15. **Storage Account Prep Func Role Name Guid [Optional]**: Default value is `9332a9e9-93f4-48d9-8121-d279f30a732e`. This **MUST** be the same `id` per app deployment. + 16. **Storage Account Data Func Role Name Guid [Optional]**: Default value is `5b67af51-4a98-47e1-9d22-745069f51a13`. This **MUST** be the same `id` per app deployment. + 17. **DefaultCulture [Optional]**: By default the application uses `en-US` locale. You can choose the locale from the list, if you wish to use the app in different locale.Also, you may add/update the resources for other locales and update this configuration if desired. + 18. **SupportedCultures [Optional]**: This is the list of locales that application supports currently.You may add/update the resources for other locales and update this configuration if desired. > **Note:** Make sure that the values are copied as-is, with no extra spaces. The template checks that GUIDs are exactly 36 characters. @@ -139,7 +167,9 @@ Register two Azure AD application in your tenant's directory: one for author bot > If do not have these values, refer [this section](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Troubleshooting#2-forgetting-the-botId-or-appDomain) of the Troubleshooting guide for steps to get these values. -1. Go to **App Registrations** page [here](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps) and open the author app you created (in Step 1) from the application list. +1. Go to **App Registrations** page [here](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps) and open the Microsoft Graph Azure AD app you created (in Step 1) from the application list. + + > NOTE: This step is to set-up authentication for Microsoft Graph Azure AD app. 1. Under **Manage**, click on **Authentication** to bring up authentication settings. @@ -193,9 +223,9 @@ Register two Azure AD application in your tenant's directory: one for author bot 2. Click **Save** to commit your changes. -## 4. Add Permissions to your app +## 4. Add Permissions to your Microsoft Graph Azure AD app -Continuing from the Azure AD app registration page where we ended Step 3. +Continuing from the Microsoft Graph Azure AD app registration page where we ended Step 3. 1. Select **API Permissions** blade from the left hand side. @@ -206,11 +236,11 @@ Continuing from the Azure AD app registration page where we ended Step 3. * Under **Commonly used Microsoft APIs**, * Select “Microsoft Graph”, then select **Delegated permissions** and check the following permissions, - 1. **Group.Read.All** + 1. **GroupMember.Read.All** 2. **AppCatalog.Read.All** * then select **Application permissions** and check the following permissions, - 1. **Group.Read.All** + 1. **GroupMember.Read.All** 2. **User.Read.All** 3. **TeamsAppInstallation.ReadWriteForUser.All** @@ -224,7 +254,7 @@ Continuing from the Azure AD app registration page where we ended Step 3. 4. If you are logged in as the Global Administrator, click on the “Grant admin consent for %tenant-name%” button to grant admin consent, else inform your Admin to do the same through the portal.
Alternatively you may follow the steps below: - - Prepare link - https://login.microsoftonline.com/common/adminconsent?client_id=%appId%. Replace the `%appId%` with the `Application (client) ID` of Microsoft Teams author bot app (from above). + - Prepare link - https://login.microsoftonline.com/common/adminconsent?client_id=%appId%. Replace the `%appId%` with the `Application (client) ID` of Microsoft Graph Azure AD app (from above). - Global Administrator can grant consent using the link above. ## 5. Create the Teams app packages diff --git a/Wiki/Home.md b/Wiki/Home.md index d4e46b10c..e816bf371 100644 --- a/Wiki/Home.md +++ b/Wiki/Home.md @@ -15,11 +15,14 @@ It provides a foundation to build custom targeted communication capabilities suc * [Localization](Localization) * Deploying the app * [Deployment guide](Deployment-guide) + * [Deployment guide certificate](Deployment-guide-certificate) * [Deployment guide powershell](Deployment-guide-powershell) * [Troubleshooting](Troubleshooting) * Migrating to newer version + * [v5](v5-migration-guide) * [v4](v4-migration-guide) * [v3](v3-migration-guide) * [v2](v2-migration-guide) +* [Scaling Company Communicator](Scale-app) * [Extending Company Communicator](Taking-it-further) * [Release Notes](Release-notes) \ No newline at end of file diff --git a/Wiki/Release-notes.md b/Wiki/Release-notes.md index c7b2621c1..8ab0a09fc 100644 --- a/Wiki/Release-notes.md +++ b/Wiki/Release-notes.md @@ -6,7 +6,14 @@ Cumulative improvements in Company Communicator App. |Release |Published to
Microsoft Store | |---|---| -| 4.1 | Mar, 2021 +| 5.0 | Nov, 2021 +| 4.1.5 | Sep 29, 2021 +| 4.1.4 | Sep 14, 2021 +| 4.1.3 | Jul 2, 2021 +| 4.1.2 | Jun 25, 2021 +| 4.1.1 | Jun 12, 2021 +| 4.1 | Mar 19, 2021 +| 4.1 | Mar 19, 2021 | 4.0 | Dec 30, 2020 | 3.0 | Oct 29, 2020 | 2.1 | Oct 16, 2020 @@ -16,7 +23,40 @@ Cumulative improvements in Company Communicator App. ### Company Communicator feature release notes -#### 4.1 (Mar, 2021) +#### 5.0 (Nov, 2021) +##### Changes introduced +- Added Key Vault and Managed Identity. +- Support certificate authentication. +- Bug fix to resolve expired delta url. + +#### 4.1.5 (Sep 29, 2021) +##### Changes introduced +- Limit the size of the error and warning messages stored to 1024 characters. + +#### 4.1.4 (Sep 14, 2021) +##### Changes introduced +- Support large number of users. +- Reduce memory usage. + +#### 4.1.3 (Jul 2, 2021) +##### Changes introduced +- Export report for users who have left tenant. + +#### 4.1.2 (Jun 25, 2021) +##### Changes introduced +- Exclude existing guest users with user app installed from receiving message. +- Identify UserType using export report functionality. +- Bug fix preventing proactive installations. + +#### 4.1.1 (Jun 12, 2021) +##### Changes introduced +- Exclude guest users when sending message to: + - Members of one or more Teams. + - Members of one or more Groups. +- Bug fix with the author app interface in dark and high-contrast themes. +- Resolved potential out of memory errors when sending message to large audience. + +#### 4.1 (Mar 19, 2021) ##### Changes introduced - Locale support for multiple languages. - Migration to fluent ui northstar. diff --git a/Wiki/Scale-app.md b/Wiki/Scale-app.md new file mode 100644 index 000000000..fdb6540a2 --- /dev/null +++ b/Wiki/Scale-app.md @@ -0,0 +1,26 @@ +# Scale +If you need to scale the app for large number of users(greater than 200K), please follow the below steps. + +## 1. Create new Storage Account for Durable function. + +1. Find and goto the resource group which is used for the Company Communicator app deployment. +1. Click on **+ Create**. +1. Then, search for **Storage Account** and click on **Create**. +1. Now, fill in the fields such as **Storage account name** and click on **Review + Create**. +1. Once the resource is created, then goto Storage Account. +1. Under **Security + networking**, click on access keys. +1. Then, click on **Show keys** and copy the key1 connection string. +1. Now, goto the Company Communicator prep function and click on **Configuration**. +1. Update the value of **Azure.WebJobsStorage** with the connection string from step 7. +1. Click on **Save** to commit changes. + + > Please make sure to keep the below value less than 50rps, as going over this rate can get the bot blocked. + ``` + "serviceBus": { + "messageHandlerOptions": { + "maxConcurrentCalls": 30 + } + } + ``` + + diff --git a/Wiki/Solution-overview.md b/Wiki/Solution-overview.md index f0a937d6c..2b17c2693 100644 --- a/Wiki/Solution-overview.md +++ b/Wiki/Solution-overview.md @@ -2,12 +2,16 @@ Refer the following image for high level architecture. -![Overview](images/architecture_overview_v2.png) +![Overview](images/architecture_overview_v4.png) The **Company Communicator** app has the following main components: * **App Service**: The app service implements the message compose experience in the team tab, and the messaging endpoint for the bot. * **Service Bus**: The individual messages sent by the bot to the recipients are enqueued on a service bus queue, to be processed by an Azure Function. This queue decouples the message composition experience from the process that delivers the message to recipients. * **Azure Function**: The Azure Functions picks up the messages from the queues, prepares the recipients and delivers them. +* **Azure Key vault**: The Azure Key vault stores the secrets, certificates and connection strings. For more information about the data stored, please check [this](Data-stores.md). +* **Author Bot Registration**: The Author Bot registration is used for author's app. The application is separated from the User application so that different teams policies can be applied. +* **User Bot Registration**: The User Bot registration is used for user's app, which is installed by users to receive messages send by Company Communicator application. +* **Graph App Registration**: The Graph application registration is used for Microsoft Graph api's. The recommended approach is to have a different application registered for managing Microsoft Graph API permissions. * **Microsoft Graph API**: The app leverages Microsoft graph api's to [Search Groups](https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0&tabs=http), [Get Group Transitive Members](https://docs.microsoft.com/en-us/graph/api/group-list-transitivemembers?view=graph-rest-1.0&tabs=http), [Get Users](https://docs.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=http) and [proactively install the User application for a user](https://docs.microsoft.com/en-us/graph/api/user-add-teamsappinstallation?view=graph-rest-beta&tabs=http). --- @@ -93,7 +97,7 @@ App service requires the following `Delegated permission`: |Sr. No.| Use Case | API| Delegated permissions| API version |--|--|--|--|--| -| 1. | Search Groups | GET [https://graph.microsoft.com/v1.0/groups?$filter=`condition`](https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0&tabs=http) | Group.Read.All| v1.0 +| 1. | Search Groups | GET [https://graph.microsoft.com/v1.0/groups?$filter=`condition`](https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0&tabs=http) | GroupMember.Read.All| v1.0 | 2. | Get App Catalog Id | GET [https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=distributionMethod eq 'organization'](https://docs.microsoft.com/en-us/graph/api/appcatalogs-list-teamsapps?view=graph-rest-1.0&tabs=http) | AppCatalog.Read.All | v1.0 ### App Permissions @@ -103,7 +107,7 @@ Azure functions require the following `App Permissions` for different use cases: |--|--|--|--|--| | 1. | Get All Users | GET [https://graph.microsoft.com/v1.0/users/delta](https://docs.microsoft.com/en-us/graph/api/user-delta?view=graph-rest-1.0&tabs=http) | User.Read.All | v1.0 | 2. | Get User | GET [https://graph.microsoft.com/v1.0/users/`user-id`](https://docs.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http) | User.Read.All| v1.0 -| 3. | Get Group Transitive Members | GET [https://graph.microsoft.com/v1.0/groups/`group-id`/transitiveMembers](https://docs.microsoft.com/en-us/graph/api/group-list-transitivemembers?view=graph-rest-1.0&tabs=http) | Group.Read.All| v1.0 +| 3. | Get Group Transitive Members | GET [https://graph.microsoft.com/v1.0/groups/`group-id`/transitiveMembers](https://docs.microsoft.com/en-us/graph/api/group-list-transitivemembers?view=graph-rest-1.0&tabs=http) | GroupMember.Read.All| v1.0 | 4. | Get Teams App Installation Id | GET [https://graph.microsoft.com/v1.0/users/`user-id`/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/id eq '`teamsAppId`'](https://docs.microsoft.com/en-us/graph/api/userteamwork-list-installedapps?view=graph-rest-1.0&tabs=http) | TeamsAppInstallation.ReadWriteForUser.All | v1.0 | 5. | Get Chat Id | GET [https://graph.microsoft.com/v1.0/users/`user-id`/teamwork/installedApps/`teamsAppInstallationId`/chat](https://docs.microsoft.com/en-us/graph/api/userscopeteamsappinstallation-get-chat?view=graph-rest-1.0&tabs=http) | TeamsAppInstallation.ReadWriteForUser.All | v1.0 | 6. | Install app for user | POST [https://graph.microsoft.com/v1.0/`user-id`/teamwork/installedApps](https://docs.microsoft.com/en-us/graph/api/userteamwork-post-installedapps?view=graph-rest-1.0&tabs=http) | TeamsAppInstallation.ReadWriteForUser.All | v1.0 \ No newline at end of file diff --git a/Wiki/images/architecture_overview_v4.png b/Wiki/images/architecture_overview_v4.png new file mode 100644 index 0000000000000000000000000000000000000000..1abad11713a11e148dae66b3ec56d8e1dfc1187c GIT binary patch literal 96188 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 literal 0 HcmV?d00001 diff --git a/Wiki/images/create-certificate.png b/Wiki/images/create-certificate.png new file mode 100644 index 0000000000000000000000000000000000000000..e96da55280d11ee4e22420750eabf39c3ed49061 GIT binary patch literal 411466 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 $;)j}oZ+umoVA57-1rFk>lKhjN5wcIuedk1 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 literal 0 HcmV?d00001 diff --git a/Wiki/images/export-cert.png b/Wiki/images/export-cert.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa241d325cb1f99446e2a56809ef2356daaa1f3 GIT binary patch literal 18199 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 L^>bP0l+XkKVTiH4 literal 0 HcmV?d00001 diff --git a/Wiki/images/file-explorer.png b/Wiki/images/file-explorer.png index 1376104106e504c34a2c6130afaf569c4d3545a1..9d656be92f7afac3f16ba98984d68d215eb2380c 100644 GIT binary patch literal 20649 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 literal 41697 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 I{-~YNJJ_k@ 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 VT#PkllA8g(PU@V}ex!*D`yc2^5*+{l literal 0 HcmV?d00001 diff --git a/Wiki/images/multitenant_app_secret.png b/Wiki/images/multitenant_app_secret.png index 70d08c3b95ab648429a305a5144c077473499150..6158f1ef95d4ce1f5c7edbfd7eedfc2f1ad3ead6 100644 GIT binary patch literal 69419 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
~-f6$P$*T@#a`;c# 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 (`#EKx%+jY3^C?u_f(#NX4V6 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 Please use the same subscription being used for your Company Communicator v4 deployment (from step 1). + +1. Azure will create a "Custom deployment" based on the Company Communicator ARM template and ask you to fill in the template parameters. + + > **Note:** Please ensure that you don't use underscore (_) or space in any of the field values otherwise the deployment may fail. + +1. Select a subscription and a resource group. + > Please use the same `subscription`, `resource group` being used for your Company Communicator v4 deployment. (from step 1) + +1. Enter a **Base Resource Name**, which the template uses to generate names for the other resources. + > Please use the same `Base resource name` being used for your Company Communicator v4 deployment. (from step 1) + +1. Update the following fields in the template: + 1. **User Client ID**: The application (client) ID of the Microsoft Teams user bot app. (from Step 1) + 2. **User Client Secret**: The client secret of the Microsoft Teams user bot app. (from Step 1) + 3. **Tenant Id**: The tenant ID. (from Step 1) + 4. **Author Client ID**: The application (client) ID of the Microsoft Teams author bot app. (from Step 1) + 5. **Author Client Secret**: The client secret of the Microsoft Teams author bot app. (from Step 1) + 6. **Microsoft Graph App Client ID**: The application (client) ID of the Microsoft Graph Azure AD app. (from Step 2) + 7. **Microsoft Graph App Secret**: The client secret of the Microsoft Graph Azure AD app. (from Step 2) + 8. **Proactively Install User App [Optional]**: Default value is `true`. You may set it to `false` if you want to disable the feature. + 9. **User App ExternalId [Optional]**: Default value is `148a66bb-e83d-425a-927d-09f4299a9274`. This **MUST** be the same `id` that is in the Teams app manifest for the user app. + 10. **Service Bus Web App Role Name Guid [Optional]**: Default value is `958380b3-630d-4823-b933-f59d92cdcada`. This **MUST** be the same `id` per app deployment. + + > **Note:** Make sure to keep the same values for an upgrade. Please change the role name GUIDs in case of another Company Communicator Deployment in same subscription. + + 11. **Service Bus Prep Func Role Name Guid [Optional]**: Default value is `ce6ca916-08e9-4639-bfbe-9d098baf42ca`. This **MUST** be the same `id` per app deployment. + 12. **Service Bus Send Func Role Name Guid [Optional]**: Default value is `960365a2-c7bf-4ff3-8887-efa86fe4a163`. This **MUST** be the same `id` per app deployment. + 13. **Service Bus Data Func Role Name Guid [Optional]**: Default value is `d42703bc-421d-4d98-bc4d-cd2bb16e5b0a`. This **MUST** be the same `id` per app deployment. + 14. **Storage Account Web App Role Name Guid [Optional]**: Default value is `edd0cc48-2cf7-490e-99e8-131311e42030`. This **MUST** be the same `id` per app deployment. + 15. **Storage Account Prep Func Role Name Guid [Optional]**: Default value is `9332a9e9-93f4-48d9-8121-d279f30a732e`. This **MUST** be the same `id` per app deployment. + 16. **Storage Account Data Func Role Name Guid [Optional]**: Default value is `5b67af51-4a98-47e1-9d22-745069f51a13`. This **MUST** be the same `id` per app deployment. + 17. **DefaultCulture [Optional]**: By default the application uses `en-US` locale. You can choose the locale from the list, if you wish to use the app in different locale.Also, you may add/update the resources for other locales and update this configuration if desired. + 18. **SupportedCultures [Optional]**: This is the list of locales that application supports currently.You may add/update the resources for other locales and update this configuration if desired. + + + > **Note:** Make sure that the values are copied as-is, with no extra spaces. The template checks that GUIDs are exactly 36 characters. + + > **Note:** If your Azure subscription is in a different tenant than the tenant where you want to install the Teams App, please update the `Tenant Id` field with the tenant where you want to install the Teams App. + +1. Update the "Sender UPN List", which is a semicolon-delimited list of users (Authors) who will be allowed to send messages using the Company Communicator. + * For example, to allow Megan Bowen (meganb@contoso.com) and Adele Vance (adelev@contoso.com) to send messages, set this parameter to `meganb@contoso.com;adelev@contoso.com`. + * You can change this list later by going to the App Service's "Configuration" blade. + +1. If you wish to change the app name, description, and icon from the defaults, modify the corresponding template parameters. + +1. Agree to the Azure terms and conditions by clicking on the check box "I agree to the terms and conditions stated above" located at the bottom of the page. + +1. Click on "Purchase" to start the deployment. + +1. Wait for the deployment to finish. You can check the progress of the deployment from the "Notifications" pane of the Azure Portal. It may take **up to an hour** for the deployment to finish. + + > If the deployment fails, see [this section](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Troubleshooting#1-code-deployment-failure) of the Troubleshooting guide. + +1. Then go to the "Deployment Center" section of the app service. Click on the "Sync" to update the existing app service to the latest code in the GitHub repository. + + ![Screenshot of refreshing code deployment](images/troubleshooting_sourcecontrols.png) + +1. Please repeat the above step (step 11) for the function apps. + +1. Once the deployment is successfully completed, go to the deployment's "Outputs" tab, and note down the follwing values. We will need them later. + * **authorBotId:** This is the Microsoft Application ID for the Company Communicator app. For the following steps, it will be referred to as `%authorBotId%`. + * **userBotId:** This is the Microsoft Application ID for the Company Communicator app. For the following steps, it will be referred to as `%userBotId%`. + * **appDomain:** This is the base domain for the Company Communicator app. For the following steps, it will be referred to as `%appDomain%`. + +## 5. Set-up Authentication + +1. Note that you have the `%authorBotId%`, `%userBotId%` and `%appDomain%` values from the previous step (Step 2). + + > If do not have these values, refer [this section](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Troubleshooting#2-forgetting-the-botId-or-appDomain) of the Troubleshooting guide for steps to get these values. + +1. Go to **App Registrations** page [here](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps) and open the Microsoft Graph Azure AD app you created (in Step 2) from the application list. + +1. Under **Manage**, click on **Authentication** to bring up authentication settings. + + 1. Add a new entry to **Redirect URIs**: + - **Type**: Web + - **Redirect URI**: Enter `https://%appDomain%/signin-simple-end` for the URL e.g. `https://appName.azurefd.net/signin-simple-end` + + 1. Under **Implicit grant**, check **ID tokens**. + + 1. Click **Save** to commit your changes. + +1. Back under **Manage**, click on **Expose an API**. + + 1. Click on the **Set** link next to **Application ID URI**, and change the value to `api://%appDomain%` e.g. `api://appName.azurefd.net`. + + 1. Click **Save** to commit your changes. + + 1. Click on **Add a scope**, under **Scopes defined by this API**. In the flyout that appears, enter the following values: + * **Scope name:** access_as_user + * **Who can consent?:** Admins and users + * **Admin and user consent display name:** Access the API as the current logged-in user + * **Admin and user consent description:** Access the API as the current logged-in user + + 1. Click **Add scope** to commit your changes. + + 1. Click **Add a client application**, under **Authorized client applications**. In the flyout that appears, enter the following values: + * **Client ID**: `5e3ce6c0-2b1f-4285-8d4b-75ee78787346` + * **Authorized scopes**: Select the scope that ends with `access_as_user`. (There should only be 1 scope in this list.) + + 1. Click **Add application** to commit your changes. + + 1. **Repeat the previous two steps**, but with client ID = `1fec8e78-bce4-4aaf-ab1b-5451cc387264`. After this step you should have **two** client applications (`5e3ce6c0-2b1f-4285-8d4b-75ee78787346` and `1fec8e78-bce4-4aaf-ab1b-5451cc387264`) listed under **Authorized client applications**. + +1. Back under **Manage**, click on **Manifest**. + + 1. In the editor that appears, find the `optionalClaims` property in the JSON Azure AD application manifest, and replace it with the following block: + ``` + "optionalClaims": { + "idToken": [], + "accessToken": [ + { + "name": "upn", + "source": null, + "essential": false, + "additionalProperties": [] + } + ], + "saml2Token": [] + }, + ``` + +1. Click **Save** to commit your changes. + +## 6. Add Permissions to your app + +Continuing from the Azure AD author app registration page where we ended Step 3. + +1. Select **API Permissions** blade from the left hand side. + +2. Click on **Add a permission** button to add permission to your app. + +3. In Microsoft APIs under Select an API label, select the particular service and give the following permissions, + + * Under **Commonly used Microsoft APIs**, + + * Select “Microsoft Graph”, then select **Delegated permissions** and check the following permissions, + 1. **GroupMember.Read.All** + 2. **AppCatalog.Read.All** + + * then select **Application permissions** and check the following permissions, + 1. **GroupMember.Read.All** + 2. **User.Read.All** + 3. **TeamsAppInstallation.ReadWriteForUser.All** + + * Click on **Add Permissions** to commit your changes. + + ![Azure AD API permissions](images/multitenant_app_permissions_1.png) + ![Azure AD API permissions](images/multitenant_app_permissions_2.png) + + > Please refer to [Solution overview](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/wiki/Solution-overview#microsoft-graph-api) for more details about the above permissions. + +4. If you are logged in as the Global Administrator, click on the “Grant admin consent for %tenant-name%” button to grant admin consent, else inform your Admin to do the same through the portal. +
+ Alternatively you may follow the steps below: + - Prepare link - https://login.microsoftonline.com/common/adminconsent?client_id=%appId%. Replace the `%appId%` with the `Application (client) ID` of Microsoft Graph Azure AD app (from above). + - Global Administrator can grant consent using the link above. + +### Migration Status +If you have performed all the steps, migration completes after successful deployment. \ No newline at end of file