@microsoft/teamsfx-core 3.0.5-alpha.eb1380cea.0 → 3.0.5-alpha.fbebd1e39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/build/client/graphClient.d.ts +8 -4
  2. package/build/client/graphClient.d.ts.map +1 -1
  3. package/build/client/graphClient.js +35 -8
  4. package/build/client/graphClient.js.map +1 -1
  5. package/build/client/interfaces/GetGroupResponse.d.ts +6 -0
  6. package/build/client/interfaces/GetGroupResponse.d.ts.map +1 -0
  7. package/build/client/interfaces/GetGroupResponse.js +5 -0
  8. package/build/client/interfaces/GetGroupResponse.js.map +1 -0
  9. package/build/client/interfaces/GetUserResponse.d.ts +7 -0
  10. package/build/client/interfaces/GetUserResponse.d.ts.map +1 -0
  11. package/build/client/interfaces/GetUserResponse.js +5 -0
  12. package/build/client/interfaces/GetUserResponse.js.map +1 -0
  13. package/build/common/constants.d.ts +2 -0
  14. package/build/common/constants.d.ts.map +1 -1
  15. package/build/common/constants.js +3 -1
  16. package/build/common/constants.js.map +1 -1
  17. package/build/common/featureFlags.js +4 -4
  18. package/build/common/featureFlags.js.map +1 -1
  19. package/build/common/permissionInterface.d.ts +6 -0
  20. package/build/common/permissionInterface.d.ts.map +1 -1
  21. package/build/common/stringUtils.d.ts.map +1 -1
  22. package/build/common/stringUtils.js +2 -1
  23. package/build/common/stringUtils.js.map +1 -1
  24. package/build/common/templates-config.json +1 -1
  25. package/build/component/configManager/validator.d.ts.map +1 -1
  26. package/build/component/configManager/validator.js +1 -0
  27. package/build/component/configManager/validator.js.map +1 -1
  28. package/build/component/coordinator/index.d.ts +0 -1
  29. package/build/component/coordinator/index.d.ts.map +1 -1
  30. package/build/component/coordinator/index.js +53 -57
  31. package/build/component/coordinator/index.js.map +1 -1
  32. package/build/component/deps-checker/constant/helpLink.d.ts +2 -0
  33. package/build/component/deps-checker/constant/helpLink.d.ts.map +1 -1
  34. package/build/component/deps-checker/constant/helpLink.js +3 -1
  35. package/build/component/deps-checker/constant/helpLink.js.map +1 -1
  36. package/build/component/deps-checker/internal/funcToolChecker.js +5 -5
  37. package/build/component/deps-checker/internal/funcToolChecker.js.map +1 -1
  38. package/build/component/deps-checker/internal/testToolChecker.js +4 -4
  39. package/build/component/deps-checker/internal/testToolChecker.js.map +1 -1
  40. package/build/component/driver/index.d.ts +19 -20
  41. package/build/component/driver/index.d.ts.map +1 -1
  42. package/build/component/driver/index.js +19 -20
  43. package/build/component/driver/index.js.map +1 -1
  44. package/build/component/driver/m365/acquire.d.ts +3 -0
  45. package/build/component/driver/m365/acquire.d.ts.map +1 -1
  46. package/build/component/driver/m365/acquire.js +29 -19
  47. package/build/component/driver/m365/acquire.js.map +1 -1
  48. package/build/component/driver/share/utils.d.ts +5 -1
  49. package/build/component/driver/share/utils.d.ts.map +1 -1
  50. package/build/component/driver/share/utils.js +23 -22
  51. package/build/component/driver/share/utils.js.map +1 -1
  52. package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
  53. package/build/component/driver/teamsApp/createAppPackage.js +5 -5
  54. package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
  55. package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts +1 -1
  56. package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts.map +1 -1
  57. package/build/component/driver/teamsApp/utils/PluginManifestUtils.js +5 -2
  58. package/build/component/driver/teamsApp/utils/PluginManifestUtils.js.map +1 -1
  59. package/build/component/driver/teamsApp/validate.d.ts.map +1 -1
  60. package/build/component/driver/teamsApp/validate.js +3 -1
  61. package/build/component/driver/teamsApp/validate.js.map +1 -1
  62. package/build/component/driver/util/utils.d.ts.map +1 -1
  63. package/build/component/driver/util/utils.js +6 -4
  64. package/build/component/driver/util/utils.js.map +1 -1
  65. package/build/component/feature/collaboration.d.ts +7 -1
  66. package/build/component/feature/collaboration.d.ts.map +1 -1
  67. package/build/component/feature/collaboration.js +84 -1
  68. package/build/component/feature/collaboration.js.map +1 -1
  69. package/build/component/generator/combinedProject/generator.d.ts.map +1 -1
  70. package/build/component/generator/combinedProject/generator.js +2 -1
  71. package/build/component/generator/combinedProject/generator.js.map +1 -1
  72. package/build/component/generator/declarativeAgent/generator.d.ts.map +1 -1
  73. package/build/component/generator/declarativeAgent/generator.js +2 -1
  74. package/build/component/generator/declarativeAgent/generator.js.map +1 -1
  75. package/build/component/generator/generator.d.ts +1 -1
  76. package/build/component/generator/generator.d.ts.map +1 -1
  77. package/build/component/generator/generator.js +2 -1
  78. package/build/component/generator/generator.js.map +1 -1
  79. package/build/component/generator/openApiSpec/common.d.ts.map +1 -1
  80. package/build/component/generator/openApiSpec/common.js +2 -1
  81. package/build/component/generator/openApiSpec/common.js.map +1 -1
  82. package/build/component/generator/openApiSpec/helper.d.ts.map +1 -1
  83. package/build/component/generator/openApiSpec/helper.js +132 -98
  84. package/build/component/generator/openApiSpec/helper.js.map +1 -1
  85. package/build/component/generator/other/ssrTabGenerator.d.ts.map +1 -1
  86. package/build/component/generator/other/ssrTabGenerator.js +2 -1
  87. package/build/component/generator/other/ssrTabGenerator.js.map +1 -1
  88. package/build/component/generator/other/tdpGenerator.d.ts.map +1 -1
  89. package/build/component/generator/other/tdpGenerator.js +2 -1
  90. package/build/component/generator/other/tdpGenerator.js.map +1 -1
  91. package/build/component/generator/spfx/spfxGenerator.d.ts +1 -1
  92. package/build/component/generator/spfx/spfxGenerator.d.ts.map +1 -1
  93. package/build/component/generator/spfx/spfxGenerator.js +12 -9
  94. package/build/component/generator/spfx/spfxGenerator.js.map +1 -1
  95. package/build/component/generator/spfx/utils/constants.d.ts +2 -0
  96. package/build/component/generator/spfx/utils/constants.d.ts.map +1 -1
  97. package/build/component/generator/spfx/utils/constants.js +2 -0
  98. package/build/component/generator/spfx/utils/constants.js.map +1 -1
  99. package/build/component/generator/templates/templateReplaceMap.d.ts.map +1 -1
  100. package/build/component/generator/templates/templateReplaceMap.js +8 -6
  101. package/build/component/generator/templates/templateReplaceMap.js.map +1 -1
  102. package/build/component/generator/utils.js +1 -1
  103. package/build/component/generator/utils.js.map +1 -1
  104. package/build/component/m365/constants.d.ts +1 -0
  105. package/build/component/m365/constants.d.ts.map +1 -1
  106. package/build/component/m365/constants.js +2 -1
  107. package/build/component/m365/constants.js.map +1 -1
  108. package/build/component/m365/interface.d.ts +6 -5
  109. package/build/component/m365/interface.d.ts.map +1 -1
  110. package/build/component/m365/interface.js +6 -5
  111. package/build/component/m365/interface.js.map +1 -1
  112. package/build/component/m365/packageService.d.ts +13 -3
  113. package/build/component/m365/packageService.d.ts.map +1 -1
  114. package/build/component/m365/packageService.js +175 -15
  115. package/build/component/m365/packageService.js.map +1 -1
  116. package/build/core/FxCore.d.ts +0 -3
  117. package/build/core/FxCore.d.ts.map +1 -1
  118. package/build/core/FxCore.js +35 -63
  119. package/build/core/FxCore.js.map +1 -1
  120. package/build/core/collaborator.d.ts +1 -0
  121. package/build/core/collaborator.d.ts.map +1 -1
  122. package/build/core/collaborator.js +55 -3
  123. package/build/core/collaborator.js.map +1 -1
  124. package/build/core/middleware/utils/debug/taskMigrator.js +1 -1
  125. package/build/core/share.d.ts +9 -0
  126. package/build/core/share.d.ts.map +1 -0
  127. package/build/core/share.js +118 -0
  128. package/build/core/share.js.map +1 -0
  129. package/build/error/depCheck.js +1 -1
  130. package/build/error/depCheck.js.map +1 -1
  131. package/build/index.d.ts +1 -0
  132. package/build/index.d.ts.map +1 -1
  133. package/build/index.js +3 -1
  134. package/build/index.js.map +1 -1
  135. package/build/question/collaborator.d.ts +6 -0
  136. package/build/question/collaborator.d.ts.map +1 -0
  137. package/build/question/collaborator.js +166 -0
  138. package/build/question/collaborator.js.map +1 -0
  139. package/build/question/constants.d.ts +1 -0
  140. package/build/question/constants.d.ts.map +1 -1
  141. package/build/question/constants.js +2 -1
  142. package/build/question/constants.js.map +1 -1
  143. package/build/question/generator.d.ts.map +1 -1
  144. package/build/question/generator.js.map +1 -1
  145. package/build/question/index.d.ts.map +1 -1
  146. package/build/question/index.js +6 -4
  147. package/build/question/index.js.map +1 -1
  148. package/build/question/inputs/ShareInputs.d.ts +6 -4
  149. package/build/question/inputs/ShareInputs.d.ts.map +1 -1
  150. package/build/question/inputs/index.d.ts +12 -12
  151. package/build/question/inputs/index.d.ts.map +1 -1
  152. package/build/question/inputs/index.js +12 -12
  153. package/build/question/inputs/index.js.map +1 -1
  154. package/build/question/options/ShareOptions.d.ts.map +1 -1
  155. package/build/question/options/ShareOptions.js +12 -5
  156. package/build/question/options/ShareOptions.js.map +1 -1
  157. package/build/question/other.d.ts +2 -8
  158. package/build/question/other.d.ts.map +1 -1
  159. package/build/question/other.js +11 -266
  160. package/build/question/other.js.map +1 -1
  161. package/build/question/questionNames.d.ts +3 -4
  162. package/build/question/questionNames.d.ts.map +1 -1
  163. package/build/question/questionNames.js +3 -4
  164. package/build/question/questionNames.js.map +1 -1
  165. package/build/question/share.d.ts +22 -0
  166. package/build/question/share.d.ts.map +1 -0
  167. package/build/question/share.js +165 -0
  168. package/build/question/share.js.map +1 -0
  169. package/build/tsconfig.tsbuildinfo +1 -1
  170. package/package.json +4 -4
  171. package/resource/package.nls.json +26 -16
  172. package/resource/yaml-schema/v1.10/yaml.schema.json +2058 -0
  173. package/resource/yaml-schema/yaml.schema.json +5 -54
  174. package/templates/fallback/common.zip +0 -0
  175. package/templates/fallback/csharp.zip +0 -0
  176. package/templates/fallback/js.zip +0 -0
  177. package/templates/fallback/python.zip +0 -0
  178. package/templates/fallback/ts.zip +0 -0
  179. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/BotAuthenticationOptions.cs +44 -0
  180. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/IIdentityClientAdapter.cs +21 -0
  181. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/ITeamsInfo.cs +24 -0
  182. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/IdentityClientAdapter.cs +30 -0
  183. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/SsoDialog.cs +12 -9
  184. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/SsoOperations.cs +2 -2
  185. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/TeamsBotSsoPrompt.cs +423 -0
  186. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/TeamsBotSsoPromptSettings.cs +41 -0
  187. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/TeamsBotSsoPromptTokenResponse.cs +21 -0
  188. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/TeamsInfoWrapper.cs +20 -0
  189. package/templates/plugins/resource/aad/auth/V3/Bot/SSO/TeamsSsoBot.cs +6 -5
  190. package/build/component/driver/share/shareToOthers.d.ts +0 -17
  191. package/build/component/driver/share/shareToOthers.d.ts.map +0 -1
  192. package/build/component/driver/share/shareToOthers.js +0 -127
  193. package/build/component/driver/share/shareToOthers.js.map +0 -1
@@ -14,7 +14,7 @@
14
14
  "version": {
15
15
  "type": "string",
16
16
  "description": "The version of the yaml file schema",
17
- "const": "v1.9"
17
+ "const": "v1.10"
18
18
  },
19
19
  "additionalMetadata": {
20
20
  "type": "object",
@@ -81,7 +81,6 @@
81
81
  { "$ref": "#/definitions/apiKeyUpdate"},
82
82
  { "$ref": "#/definitions/oauthRegister"},
83
83
  { "$ref": "#/definitions/oauthUpdate"},
84
- { "$ref": "#/definitions/shareToOthers"},
85
84
  { "$ref": "#/definitions/devChannelCreate"},
86
85
  { "$ref": "#/definitions/devChannelInstallApp"},
87
86
  { "$ref": "#/definitions/typeSpecCompile"}
@@ -1385,58 +1384,10 @@
1385
1384
  "appPackagePath": {
1386
1385
  "type": "string",
1387
1386
  "description": "path to app package"
1388
- }
1389
- }
1390
- },
1391
- "writeToEnvironmentFile": {
1392
- "type": "object",
1393
- "additionalProperties": false,
1394
- "description": "Write environment variables to environment file",
1395
- "required": ["titleId", "appId"],
1396
- "properties": {
1397
- "titleId": {
1398
- "description": "Required. The ID of M365 title.",
1399
- "$ref": "#/definitions/envVarName"
1400
1387
  },
1401
- "appId": {
1402
- "description": "Required. The app ID of M365 title.",
1403
- "$ref": "#/definitions/envVarName"
1404
- }
1405
- }
1406
- }
1407
- }
1408
- },
1409
- "shareToOthers": {
1410
- "type": "object",
1411
- "additionalProperties": false,
1412
- "description": "Share apps to others.",
1413
- "required": ["uses", "with"],
1414
- "properties": {
1415
- "name": {
1416
- "type": "string",
1417
- "description": "An optional name of this action."
1418
- },
1419
- "env": {
1420
- "type": "object",
1421
- "description": "Define environment variables for this action.",
1422
- "additionalProperties": {
1423
- "type": "string"
1424
- }
1425
- },
1426
- "uses": {
1427
- "type": "string",
1428
- "description": "Share apps to others.",
1429
- "const": "teamsApp/shareToOthers"
1430
- },
1431
- "with": {
1432
- "type": "object",
1433
- "additionalProperties": false,
1434
- "description": "parameters for this action",
1435
- "required": ["appPackagePath"],
1436
- "properties": {
1437
- "appPackagePath": {
1388
+ "scope": {
1438
1389
  "type": "string",
1439
- "description": "path to app package"
1390
+ "description": "The scope of the app (only works for declarative agent). personal is only visible to the owners. shared can be visible to other users in the tenant. Default is personal"
1440
1391
  }
1441
1392
  }
1442
1393
  },
@@ -1444,7 +1395,7 @@
1444
1395
  "type": "object",
1445
1396
  "additionalProperties": false,
1446
1397
  "description": "Write environment variables to environment file",
1447
- "required": ["titleId", "appId", "shareLink"],
1398
+ "required": ["titleId", "appId"],
1448
1399
  "properties": {
1449
1400
  "titleId": {
1450
1401
  "description": "Required. The ID of M365 title.",
@@ -1455,7 +1406,7 @@
1455
1406
  "$ref": "#/definitions/envVarName"
1456
1407
  },
1457
1408
  "shareLink": {
1458
- "description": "Required. The share link of the app.",
1409
+ "description": "Optional. The share link of the app.",
1459
1410
  "$ref": "#/definitions/envVarName"
1460
1411
  }
1461
1412
  }
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,44 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ using System.ComponentModel.DataAnnotations;
5
+
6
+ namespace {{YOUR_NAMESPACE}}.Configuration;
7
+
8
+ /// <summary>
9
+ /// Bot related authentication configuration.
10
+ /// </summary>
11
+ public class BotAuthenticationOptions
12
+ {
13
+ /// <summary>
14
+ /// The client (application) ID of an App Registration in the tenant.
15
+ /// </summary>
16
+ [Required(ErrorMessage = "Client id is required")]
17
+ [RegularExpression(@"^[0-9A-Fa-f\-]{36}$")]
18
+ public string ClientId { get; set; }
19
+
20
+ /// <summary>
21
+ /// The client (application) Secret of an App Registration in the tenant.
22
+ /// </summary>
23
+ [Required(ErrorMessage = "Client secret is required")]
24
+ public string ClientSecret { get; set; }
25
+
26
+ /// <summary>
27
+ /// Authority URL that is used in OAuth On-behalf-of flow.
28
+ /// </summary>
29
+ [Required(ErrorMessage = "OAuth authority is required")]
30
+ [RegularExpression(@"^http(s)?://[-a-zA-Z0-9@:%._\+~#=/]{1,100}$")]
31
+ public string OAuthAuthority { get; set; }
32
+
33
+ /// <summary>
34
+ /// Application ID URI.
35
+ /// </summary>
36
+ [Required(ErrorMessage = "Application id uri is required")]
37
+ public string ApplicationIdUri { get; set; }
38
+
39
+ /// <summary>
40
+ /// Login authentication start page endpoint.
41
+ /// </summary>
42
+ [Required(ErrorMessage = "Login authentication start page endpoint is required")]
43
+ public string InitiateLoginEndpoint { get; set; }
44
+ }
@@ -0,0 +1,21 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ using Microsoft.Identity.Client;
5
+
6
+ namespace {{YOUR_NAMESPACE}}.SSO
7
+ {
8
+ /// <summary>
9
+ /// Adapter of IConfidentialClientApplication On-behalf-of flow.
10
+ /// </summary>
11
+ public interface IIdentityClientAdapter
12
+ {
13
+ /// <summary>
14
+ /// Use On-behalf-of flow to exchange access token.
15
+ /// </summary>
16
+ /// <param name="ssoToken">token from Teams client</param>
17
+ /// <param name="scopes">required scopes</param>
18
+ /// <returns></returns>
19
+ Task<AuthenticationResult> GetAccessToken(string ssoToken, IEnumerable<string> scopes);
20
+ }
21
+ }
@@ -0,0 +1,24 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ using Microsoft.Agents.Builder;
5
+ using Microsoft.Agents.Extensions.Teams.Models;
6
+
7
+ namespace {{YOUR_NAMESPACE}}.SSO
8
+ {
9
+ /// <summary>
10
+ /// provides utility methods for interactions that occur within Microsoft Teams.
11
+ /// </summary>
12
+ public interface ITeamsInfo
13
+ {
14
+ /// <summary>
15
+ /// Gets the account of a single conversation member.
16
+ /// This works in one-on-one, group, and teams scoped conversations.
17
+ /// </summary>
18
+ /// <param name="context"> Turn context. </param>
19
+ /// <param name="userId"> ID of the user in question. </param>
20
+ /// <param name="cancellationToken"> cancellation token. </param>
21
+ /// <returns>Team Account Details.</returns>
22
+ Task<TeamsChannelAccount> GetTeamsMemberAsync(ITurnContext context, string userId, CancellationToken cancellationToken = default);
23
+ }
24
+ }
@@ -0,0 +1,30 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ using Microsoft.Identity.Client;
5
+
6
+ namespace {{YOUR_NAMESPACE}}.SSO
7
+ {
8
+ /// <summary>
9
+ /// Helper class used to simplify unit test.
10
+ /// https://stackoverflow.com/questions/65334284/how-to-mock-moq-iconfidentialclientapplication-which-has-sealed-setup-abstract
11
+ /// </summary>
12
+ internal class IdentityClientAdapter : IIdentityClientAdapter
13
+ {
14
+ private readonly IConfidentialClientApplication _confidentialClientApplication;
15
+
16
+ public IdentityClientAdapter(IConfidentialClientApplication confidentialClientApplication)
17
+ {
18
+ _confidentialClientApplication = confidentialClientApplication;
19
+ }
20
+
21
+ public async Task<AuthenticationResult> GetAccessToken(string ssoToken, IEnumerable<string> scopes)
22
+ {
23
+ var userAssertion = new UserAssertion(ssoToken);
24
+ return await _confidentialClientApplication
25
+ .AcquireTokenOnBehalfOf(scopes, userAssertion)
26
+ .ExecuteAsync()
27
+ .ConfigureAwait(false);
28
+ }
29
+ }
30
+ }
@@ -1,9 +1,11 @@
1
- using Microsoft.Bot.Builder;
2
- using Microsoft.Bot.Builder.Dialogs;
3
- using Microsoft.Bot.Schema;
1
+ using {{YOUR_NAMESPACE}}.Configuration;
2
+ using Json.More;
3
+ using Microsoft.Agents.Builder;
4
+ using Microsoft.Agents.Builder.Dialogs;
5
+ using Microsoft.Agents.Builder.State;
6
+ using Microsoft.Agents.Core.Models;
7
+ using Microsoft.Agents.Storage;
4
8
  using Microsoft.Extensions.Options;
5
- using Microsoft.TeamsFx.Bot;
6
- using Microsoft.TeamsFx.Configuration;
7
9
 
8
10
  namespace {{YOUR_NAMESPACE}}.SSO;
9
11
 
@@ -173,9 +175,10 @@ public class SsoDialog : ComponentDialog
173
175
 
174
176
  private async Task<bool> ShouldDedup(ITurnContext context)
175
177
  {
178
+ var tokenResponseObject = context.Activity.Value.ToJsonDocument();
176
179
  var storeItem = new StoreItem()
177
180
  {
178
- eTag = (context.Activity.Value as dynamic).id,
181
+ eTag = tokenResponseObject.RootElement.GetProperty("id").ToString(),
179
182
  };
180
183
  var key = GetStorageKey(context);
181
184
  var storeItems = new Dictionary<string, object>()
@@ -209,13 +212,13 @@ public class SsoDialog : ComponentDialog
209
212
  throw new Exception("TokenExchangeState can only be used with Invokes of signin/tokenExchange.");
210
213
  }
211
214
 
212
- var value = activity.Value;
213
- if (value == null || (value as dynamic).id == null)
215
+ var value = activity.Value.ToJsonDocument();
216
+ if (value == null || value.RootElement.GetProperty("id").ToString() == null)
214
217
  {
215
218
  throw new Exception("Invalid signin/tokenExchange. Missing activity.value.id.");
216
219
  }
217
220
 
218
- return $"{channelId}/{conversationId}/{(value as dynamic).id}";
221
+ return $"{channelId}/{conversationId}/{value.RootElement.GetProperty("id").ToString()}";
219
222
  }
220
223
 
221
224
  private string MatchCommands(string text)
@@ -1,7 +1,7 @@
1
- using Microsoft.Bot.Builder;
1
+ using {{YOUR_NAMESPACE}}.Configuration;
2
+ using Microsoft.Agents.Builder;
2
3
  using Microsoft.Graph;
3
4
  using Microsoft.Kiota.Abstractions.Authentication;
4
- using Microsoft.TeamsFx.Configuration;
5
5
 
6
6
  namespace {{YOUR_NAMESPACE}}.SSO;
7
7