@microsoft/agents-hosting 1.1.0-alpha.2 → 1.1.0-alpha.58

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 (150) hide show
  1. package/dist/package.json +10 -6
  2. package/dist/src/activityWireCompat.js +8 -3
  3. package/dist/src/activityWireCompat.js.map +1 -1
  4. package/dist/src/agent-client/agentClient.js +7 -3
  5. package/dist/src/agent-client/agentClient.js.map +1 -1
  6. package/dist/src/agent-client/agentResponseHandler.js +6 -2
  7. package/dist/src/agent-client/agentResponseHandler.js.map +1 -1
  8. package/dist/src/app/agentApplication.d.ts +26 -11
  9. package/dist/src/app/agentApplication.js +94 -86
  10. package/dist/src/app/agentApplication.js.map +1 -1
  11. package/dist/src/app/agentApplicationBuilder.d.ts +2 -2
  12. package/dist/src/app/agentApplicationBuilder.js.map +1 -1
  13. package/dist/src/app/agentApplicationOptions.d.ts +9 -2
  14. package/dist/src/app/appRoute.d.ts +7 -0
  15. package/dist/src/app/attachmentDownloader.d.ts +13 -3
  16. package/dist/src/app/attachmentDownloader.js +16 -3
  17. package/dist/src/app/attachmentDownloader.js.map +1 -1
  18. package/dist/src/app/{authorization.d.ts → auth/authorization.d.ts} +33 -139
  19. package/dist/src/app/auth/authorization.js +188 -0
  20. package/dist/src/app/auth/authorization.js.map +1 -0
  21. package/dist/src/app/auth/authorizationManager.d.ts +71 -0
  22. package/dist/src/app/auth/authorizationManager.js +170 -0
  23. package/dist/src/app/auth/authorizationManager.js.map +1 -0
  24. package/dist/src/app/auth/handlerStorage.d.ts +36 -0
  25. package/dist/src/app/auth/handlerStorage.js +62 -0
  26. package/dist/src/app/auth/handlerStorage.js.map +1 -0
  27. package/dist/src/app/auth/handlers/agenticAuthorization.d.ts +97 -0
  28. package/dist/src/app/auth/handlers/agenticAuthorization.js +145 -0
  29. package/dist/src/app/auth/handlers/agenticAuthorization.js.map +1 -0
  30. package/dist/src/app/auth/handlers/azureBotAuthorization.d.ts +222 -0
  31. package/dist/src/app/auth/handlers/azureBotAuthorization.js +428 -0
  32. package/dist/src/app/auth/handlers/azureBotAuthorization.js.map +1 -0
  33. package/dist/src/app/auth/handlers/index.d.ts +2 -0
  34. package/dist/src/app/auth/handlers/index.js +19 -0
  35. package/dist/src/app/auth/handlers/index.js.map +1 -0
  36. package/dist/src/app/auth/index.d.ts +2 -0
  37. package/dist/src/app/auth/index.js +19 -0
  38. package/dist/src/app/auth/index.js.map +1 -0
  39. package/dist/src/app/auth/types.d.ts +104 -0
  40. package/dist/src/app/auth/types.js +24 -0
  41. package/dist/src/app/auth/types.js.map +1 -0
  42. package/dist/src/app/index.d.ts +2 -3
  43. package/dist/src/app/index.js +2 -3
  44. package/dist/src/app/index.js.map +1 -1
  45. package/dist/src/app/inputFileDownloader.d.ts +10 -3
  46. package/dist/src/app/routeList.d.ts +1 -1
  47. package/dist/src/app/routeList.js +22 -5
  48. package/dist/src/app/routeList.js.map +1 -1
  49. package/dist/src/app/streaming/streamingResponse.d.ts +11 -1
  50. package/dist/src/app/streaming/streamingResponse.js +17 -2
  51. package/dist/src/app/streaming/streamingResponse.js.map +1 -1
  52. package/dist/src/app/turnState.d.ts +2 -38
  53. package/dist/src/app/turnState.js +1 -46
  54. package/dist/src/app/turnState.js.map +1 -1
  55. package/dist/src/auth/MemoryCache.d.ts +16 -0
  56. package/dist/src/auth/MemoryCache.js +58 -0
  57. package/dist/src/auth/MemoryCache.js.map +1 -0
  58. package/dist/src/auth/authConfiguration.d.ts +44 -2
  59. package/dist/src/auth/authConfiguration.js +218 -53
  60. package/dist/src/auth/authConfiguration.js.map +1 -1
  61. package/dist/src/auth/authConstants.d.ts +11 -0
  62. package/dist/src/auth/authConstants.js +15 -0
  63. package/dist/src/auth/authConstants.js.map +1 -0
  64. package/dist/src/auth/authProvider.d.ts +23 -0
  65. package/dist/src/auth/connections.d.ts +40 -0
  66. package/dist/src/auth/connections.js +7 -0
  67. package/dist/src/auth/connections.js.map +1 -0
  68. package/dist/src/auth/index.d.ts +2 -0
  69. package/dist/src/auth/index.js +2 -0
  70. package/dist/src/auth/index.js.map +1 -1
  71. package/dist/src/auth/jwt-middleware.js +31 -18
  72. package/dist/src/auth/jwt-middleware.js.map +1 -1
  73. package/dist/src/auth/msalConnectionManager.d.ts +63 -0
  74. package/dist/src/auth/msalConnectionManager.js +124 -0
  75. package/dist/src/auth/msalConnectionManager.js.map +1 -0
  76. package/dist/src/auth/msalTokenProvider.d.ts +31 -0
  77. package/dist/src/auth/msalTokenProvider.js +167 -16
  78. package/dist/src/auth/msalTokenProvider.js.map +1 -1
  79. package/dist/src/baseAdapter.d.ts +10 -25
  80. package/dist/src/baseAdapter.js +2 -15
  81. package/dist/src/baseAdapter.js.map +1 -1
  82. package/dist/src/cloudAdapter.d.ts +40 -23
  83. package/dist/src/cloudAdapter.js +132 -56
  84. package/dist/src/cloudAdapter.js.map +1 -1
  85. package/dist/src/connector-client/connectorClient.d.ts +9 -0
  86. package/dist/src/connector-client/connectorClient.js +39 -9
  87. package/dist/src/connector-client/connectorClient.js.map +1 -1
  88. package/dist/src/index.d.ts +0 -1
  89. package/dist/src/index.js +0 -1
  90. package/dist/src/index.js.map +1 -1
  91. package/dist/src/oauth/index.d.ts +0 -1
  92. package/dist/src/oauth/index.js +0 -1
  93. package/dist/src/oauth/index.js.map +1 -1
  94. package/dist/src/oauth/userTokenClient.d.ts +30 -13
  95. package/dist/src/oauth/userTokenClient.js +64 -26
  96. package/dist/src/oauth/userTokenClient.js.map +1 -1
  97. package/dist/src/oauth/userTokenClient.types.d.ts +19 -6
  98. package/dist/src/turnContext.d.ts +7 -1
  99. package/dist/src/turnContext.js +11 -4
  100. package/dist/src/turnContext.js.map +1 -1
  101. package/package.json +10 -6
  102. package/src/activityWireCompat.ts +8 -3
  103. package/src/agent-client/agentClient.ts +9 -3
  104. package/src/agent-client/agentResponseHandler.ts +5 -2
  105. package/src/app/agentApplication.ts +98 -79
  106. package/src/app/agentApplicationBuilder.ts +2 -2
  107. package/src/app/agentApplicationOptions.ts +10 -2
  108. package/src/app/appRoute.ts +8 -0
  109. package/src/app/attachmentDownloader.ts +18 -3
  110. package/src/app/auth/authorization.ts +252 -0
  111. package/src/app/auth/authorizationManager.ts +213 -0
  112. package/src/app/auth/handlerStorage.ts +61 -0
  113. package/src/app/auth/handlers/agenticAuthorization.ts +194 -0
  114. package/src/app/auth/handlers/azureBotAuthorization.ts +599 -0
  115. package/src/app/auth/handlers/index.ts +2 -0
  116. package/src/app/auth/index.ts +2 -0
  117. package/src/app/auth/types.ts +111 -0
  118. package/src/app/index.ts +2 -3
  119. package/src/app/inputFileDownloader.ts +11 -3
  120. package/src/app/routeList.ts +24 -5
  121. package/src/app/streaming/streamingResponse.ts +20 -3
  122. package/src/app/turnState.ts +2 -61
  123. package/src/auth/MemoryCache.ts +59 -0
  124. package/src/auth/authConfiguration.ts +258 -52
  125. package/src/auth/authConstants.ts +11 -0
  126. package/src/auth/authProvider.ts +31 -0
  127. package/src/auth/connections.ts +46 -0
  128. package/src/auth/index.ts +2 -0
  129. package/src/auth/jwt-middleware.ts +38 -21
  130. package/src/auth/msalConnectionManager.ts +150 -0
  131. package/src/auth/msalTokenProvider.ts +209 -9
  132. package/src/baseAdapter.ts +10 -29
  133. package/src/cloudAdapter.ts +192 -67
  134. package/src/connector-client/connectorClient.ts +49 -10
  135. package/src/index.ts +0 -1
  136. package/src/oauth/index.ts +0 -1
  137. package/src/oauth/userTokenClient.ts +79 -23
  138. package/src/oauth/userTokenClient.types.ts +20 -8
  139. package/src/turnContext.ts +16 -5
  140. package/dist/src/app/authorization.js +0 -387
  141. package/dist/src/app/authorization.js.map +0 -1
  142. package/dist/src/claimsIdentity.d.ts +0 -35
  143. package/dist/src/claimsIdentity.js +0 -43
  144. package/dist/src/claimsIdentity.js.map +0 -1
  145. package/dist/src/oauth/oAuthFlow.d.ts +0 -119
  146. package/dist/src/oauth/oAuthFlow.js +0 -316
  147. package/dist/src/oauth/oAuthFlow.js.map +0 -1
  148. package/src/app/authorization.ts +0 -432
  149. package/src/claimsIdentity.ts +0 -47
  150. package/src/oauth/oAuthFlow.ts +0 -378
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connections.js","sourceRoot":"","sources":["../../../src/auth/connections.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -1,5 +1,7 @@
1
1
  export * from './authConfiguration';
2
+ export * from './authConstants';
2
3
  export * from './authProvider';
3
4
  export * from './msalTokenProvider';
4
5
  export * from './request';
5
6
  export * from './msalTokenCredential';
7
+ export * from './msalConnectionManager';
@@ -15,8 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./authConfiguration"), exports);
18
+ __exportStar(require("./authConstants"), exports);
18
19
  __exportStar(require("./authProvider"), exports);
19
20
  __exportStar(require("./msalTokenProvider"), exports);
20
21
  __exportStar(require("./request"), exports);
21
22
  __exportStar(require("./msalTokenCredential"), exports);
23
+ __exportStar(require("./msalConnectionManager"), exports);
22
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,iDAA8B;AAC9B,sDAAmC;AACnC,4CAAyB;AACzB,wDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,kDAA+B;AAC/B,iDAA8B;AAC9B,sDAAmC;AACnC,4CAAyB;AACzB,wDAAqC;AACrC,0DAAuC"}
@@ -19,16 +19,30 @@ const logger = (0, logger_1.debug)('agents:jwt-middleware');
19
19
  * @returns A promise that resolves to the JWT payload.
20
20
  */
21
21
  const verifyToken = async (raw, config) => {
22
+ const payload = jsonwebtoken_1.default.decode(raw);
23
+ logger.debug('jwt.decode ', JSON.stringify(payload));
24
+ if (!payload) {
25
+ throw new Error('invalid token');
26
+ }
27
+ const audience = payload.aud;
28
+ const matchingEntry = config.connections && config.connections.size > 0
29
+ ? [...config.connections.entries()].find(([_, configuration]) => configuration.clientId === audience)
30
+ : undefined;
31
+ if (!matchingEntry) {
32
+ const err = new Error('Audience mismatch');
33
+ logger.error(err.message, audience);
34
+ throw err;
35
+ }
36
+ const [key, authConfig] = matchingEntry;
37
+ logger.debug(`Audience found at key: ${key}`);
38
+ const jwksUri = payload.iss === 'https://api.botframework.com'
39
+ ? 'https://login.botframework.com/v1/.well-known/keys'
40
+ : `${authConfig.authority}/${authConfig.tenantId}/discovery/v2.0/keys`;
41
+ logger.debug(`fetching keys from ${jwksUri}`);
42
+ const jwksClient = (0, jwks_rsa_1.default)({ jwksUri });
22
43
  const getKey = (header, callback) => {
23
- const payload = jsonwebtoken_1.default.decode(raw);
24
- logger.debug('jwt.decode ', JSON.stringify(payload));
25
- const jwksUri = payload.iss === 'https://api.botframework.com'
26
- ? 'https://login.botframework.com/v1/.well-known/keys'
27
- : `${config.authority}/${config.tenantId}/discovery/v2.0/keys`;
28
- logger.debug(`fetching keys from ${jwksUri}`);
29
- const jwksClient = (0, jwks_rsa_1.default)({ jwksUri });
30
44
  jwksClient.getSigningKey(header.kid, (err, key) => {
31
- if (err != null) {
45
+ if (err) {
32
46
  logger.error('jwksClient.getSigningKey ', JSON.stringify(err));
33
47
  logger.error(JSON.stringify(err));
34
48
  callback(err, undefined);
@@ -38,22 +52,21 @@ const verifyToken = async (raw, config) => {
38
52
  callback(null, signingKey);
39
53
  });
40
54
  };
55
+ const verifyOptions = {
56
+ issuer: authConfig.issuers,
57
+ audience: [authConfig.clientId, 'https://api.botframework.com'],
58
+ ignoreExpiration: false,
59
+ algorithms: ['RS256'],
60
+ clockTolerance: 300
61
+ };
41
62
  return await new Promise((resolve, reject) => {
42
- const verifyOptions = {
43
- issuer: config.issuers,
44
- audience: [config.clientId, 'https://api.botframework.com'],
45
- ignoreExpiration: false,
46
- algorithms: ['RS256'],
47
- clockTolerance: 300
48
- };
49
63
  jsonwebtoken_1.default.verify(raw, getKey, verifyOptions, (err, user) => {
50
- if (err != null) {
64
+ if (err) {
51
65
  logger.error('jwt.verify ', JSON.stringify(err));
52
66
  reject(err);
53
67
  return;
54
68
  }
55
- const tokenClaims = user;
56
- resolve(tokenClaims);
69
+ resolve(user);
57
70
  });
58
71
  });
59
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"jwt-middleware.js","sourceRoot":"","sources":["../../../src/auth/jwt-middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jwt-middleware.js","sourceRoot":"","sources":["../../../src/auth/jwt-middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { Activity } from '@microsoft/agents-activity';
6
+ import { AuthConfiguration } from './authConfiguration';
7
+ import { AuthProvider } from './authProvider';
8
+ import { Connections } from './connections';
9
+ import { MsalTokenProvider } from './msalTokenProvider';
10
+ export interface ConnectionMapItem {
11
+ audience?: string;
12
+ serviceUrl: string;
13
+ connection: string;
14
+ }
15
+ export declare class MsalConnectionManager implements Connections {
16
+ private _connections;
17
+ private _connectionsMap;
18
+ private _serviceConnectionConfiguration;
19
+ private static readonly DEFAULT_CONNECTION;
20
+ constructor(connectionsConfigurations?: Map<string, AuthConfiguration>, connectionsMap?: ConnectionMapItem[], configuration?: AuthConfiguration);
21
+ /**
22
+ * Get the OAuth connection for the agent.
23
+ * @param connectionName The name of the connection.
24
+ * @returns The OAuth connection for the agent.
25
+ */
26
+ getConnection(connectionName: string): MsalTokenProvider;
27
+ /**
28
+ * Get the default OAuth connection for the agent.
29
+ * @returns The default OAuth connection for the agent.
30
+ */
31
+ getDefaultConnection(): MsalTokenProvider;
32
+ /**
33
+ * Finds a connection based on a map.
34
+ *
35
+ * @param audience The audience.
36
+ * @param serviceUrl The service URL.
37
+ * @returns The TokenProvider for the connection.
38
+ *
39
+ * @remarks
40
+ * Example environment variables:
41
+ * connectionsMap__0__connection=seviceConnection
42
+ * connectionsMap__0__serviceUrl=http://*..botframework.com/*
43
+ * connectionsMap__0__audience=optional
44
+ * connectionsMap__1__connection=agentic
45
+ * connectionsMap__1__serviceUrl=agentic
46
+ *
47
+ * ServiceUrl is: A regex to match with, or "*" for any serviceUrl value.
48
+ * Connection is: A name in the 'Connections' list.
49
+ */
50
+ getTokenProvider(audience: string, serviceUrl: string): MsalTokenProvider;
51
+ /**
52
+ * Finds a connection based on an activity's blueprint.
53
+ * @param audience The audience.
54
+ * @param activity The activity.
55
+ * @returns The TokenProvider for the connection.
56
+ */
57
+ getTokenProviderFromActivity(audience: string, activity: Activity): AuthProvider;
58
+ /**
59
+ * Get the default connection configuration for the agent.
60
+ * @returns The default connection configuration for the agent.
61
+ */
62
+ getDefaultConnectionConfiguration(): AuthConfiguration;
63
+ }
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MsalConnectionManager = void 0;
8
+ const agents_activity_1 = require("@microsoft/agents-activity");
9
+ const msalTokenProvider_1 = require("./msalTokenProvider");
10
+ class MsalConnectionManager {
11
+ constructor(connectionsConfigurations = new Map(), connectionsMap = [], configuration = {}) {
12
+ this._connections = new Map();
13
+ this._connectionsMap = connectionsMap.length > 0 ? connectionsMap : (configuration.connectionsMap || []);
14
+ this._serviceConnectionConfiguration = {};
15
+ const providedConnections = connectionsConfigurations.size > 0 ? connectionsConfigurations : (configuration.connections || new Map());
16
+ for (const [name, config] of providedConnections) {
17
+ // Instantiate MsalTokenProvider for each connection
18
+ this._connections.set(name, new msalTokenProvider_1.MsalTokenProvider(config));
19
+ if (name === MsalConnectionManager.DEFAULT_CONNECTION) {
20
+ this._serviceConnectionConfiguration = config;
21
+ }
22
+ }
23
+ }
24
+ /**
25
+ * Get the OAuth connection for the agent.
26
+ * @param connectionName The name of the connection.
27
+ * @returns The OAuth connection for the agent.
28
+ */
29
+ getConnection(connectionName) {
30
+ const conn = this._connections.get(connectionName);
31
+ if (!conn) {
32
+ throw new Error(`Connection not found: ${connectionName}`);
33
+ }
34
+ return conn;
35
+ }
36
+ /**
37
+ * Get the default OAuth connection for the agent.
38
+ * @returns The default OAuth connection for the agent.
39
+ */
40
+ getDefaultConnection() {
41
+ if (this._connections.size === 0) {
42
+ throw new Error('No connections found for this Agent in the Connections Configuration.');
43
+ }
44
+ // Return the wildcard map item instance.
45
+ for (const item of this._connectionsMap) {
46
+ if (item.serviceUrl === '*' && !item.audience) {
47
+ return this.getConnection(item.connection);
48
+ }
49
+ }
50
+ return this._connections.values().next().value;
51
+ }
52
+ /**
53
+ * Finds a connection based on a map.
54
+ *
55
+ * @param audience The audience.
56
+ * @param serviceUrl The service URL.
57
+ * @returns The TokenProvider for the connection.
58
+ *
59
+ * @remarks
60
+ * Example environment variables:
61
+ * connectionsMap__0__connection=seviceConnection
62
+ * connectionsMap__0__serviceUrl=http://*..botframework.com/*
63
+ * connectionsMap__0__audience=optional
64
+ * connectionsMap__1__connection=agentic
65
+ * connectionsMap__1__serviceUrl=agentic
66
+ *
67
+ * ServiceUrl is: A regex to match with, or "*" for any serviceUrl value.
68
+ * Connection is: A name in the 'Connections' list.
69
+ */
70
+ getTokenProvider(audience, serviceUrl) {
71
+ if (!audience || !serviceUrl)
72
+ throw new Error('Audience and Service URL are required to get the token provider.');
73
+ if (this._connectionsMap.length === 0) {
74
+ return this.getDefaultConnection();
75
+ }
76
+ for (const item of this._connectionsMap) {
77
+ let audienceMatch = true;
78
+ // if we have an audience to match against, match it.
79
+ if (item.audience && audience) {
80
+ audienceMatch = item.audience === audience;
81
+ }
82
+ if (audienceMatch) {
83
+ if (item.serviceUrl === '*' || !item.serviceUrl) {
84
+ return this.getConnection(item.connection);
85
+ }
86
+ const regex = new RegExp(item.serviceUrl, 'i');
87
+ if (regex.test(serviceUrl)) {
88
+ return this.getConnection(item.connection);
89
+ }
90
+ }
91
+ }
92
+ throw new Error(`No connection found for audience: ${audience} and serviceUrl: ${serviceUrl}`);
93
+ }
94
+ /**
95
+ * Finds a connection based on an activity's blueprint.
96
+ * @param audience The audience.
97
+ * @param activity The activity.
98
+ * @returns The TokenProvider for the connection.
99
+ */
100
+ getTokenProviderFromActivity(audience, activity) {
101
+ var _a, _b, _c, _d;
102
+ let connection = this.getTokenProvider(audience, activity.serviceUrl || '');
103
+ // This is for the case where the Agentic BlueprintId is not the same as the AppId
104
+ if (connection &&
105
+ (((_a = activity.recipient) === null || _a === void 0 ? void 0 : _a.role) === agents_activity_1.RoleTypes.AgenticIdentity ||
106
+ ((_b = activity.recipient) === null || _b === void 0 ? void 0 : _b.role) === agents_activity_1.RoleTypes.AgenticUser)) {
107
+ if (((_c = connection.connectionSettings) === null || _c === void 0 ? void 0 : _c.altBlueprintConnectionName) &&
108
+ connection.connectionSettings.altBlueprintConnectionName.trim() !== '') {
109
+ connection = this.getConnection((_d = connection.connectionSettings) === null || _d === void 0 ? void 0 : _d.altBlueprintConnectionName);
110
+ }
111
+ }
112
+ return connection;
113
+ }
114
+ /**
115
+ * Get the default connection configuration for the agent.
116
+ * @returns The default connection configuration for the agent.
117
+ */
118
+ getDefaultConnectionConfiguration() {
119
+ return this._serviceConnectionConfiguration;
120
+ }
121
+ }
122
+ exports.MsalConnectionManager = MsalConnectionManager;
123
+ MsalConnectionManager.DEFAULT_CONNECTION = 'serviceConnection';
124
+ //# sourceMappingURL=msalConnectionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msalConnectionManager.js","sourceRoot":"","sources":["../../../src/auth/msalConnectionManager.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gEAAgE;AAIhE,2DAAuD;AAQvD,MAAa,qBAAqB;IAMhC,YACE,4BAA4D,IAAI,GAAG,EAAE,EACrE,iBAAsC,EAAE,EACxC,gBAAmC,EAAE;QACrC,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;QAC7B,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,IAAI,EAAE,CAAC,CAAA;QACxG,IAAI,CAAC,+BAA+B,GAAG,EAAE,CAAA;QAEzC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA;QAErI,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;YACjD,oDAAoD;YACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,qCAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;YAC1D,IAAI,IAAI,KAAK,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;gBACtD,IAAI,CAAC,+BAA+B,GAAG,MAAM,CAAA;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAE,cAAsB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAClD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,oBAAoB;QAClB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;QAC1F,CAAC;QAED,yCAAyC;QACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAA0B,CAAA;IACrE,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAE,QAAgB,EAAE,UAAkB;QACpD,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;QAEjH,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACpC,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,aAAa,GAAG,IAAI,CAAA;YAExB,qDAAqD;YACrD,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAC9B,aAAa,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAA;YAC5C,CAAC;YAED,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC5C,CAAC;gBAED,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;gBAC9C,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,oBAAoB,UAAU,EAAE,CAAC,CAAA;IAChG,CAAC;IAED;;;;;OAKG;IACH,4BAA4B,CAAE,QAAgB,EAAE,QAAkB;;QAChE,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAA;QAE3E,kFAAkF;QAClF,IAAI,UAAU;YACZ,CAAC,CAAA,MAAA,QAAQ,CAAC,SAAS,0CAAE,IAAI,MAAK,2BAAS,CAAC,eAAe;gBACrD,CAAA,MAAA,QAAQ,CAAC,SAAS,0CAAE,IAAI,MAAK,2BAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,IAAI,CAAA,MAAA,UAAU,CAAC,kBAAkB,0CAAE,0BAA0B;gBACzD,UAAU,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC3E,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAA,UAAU,CAAC,kBAAkB,0CAAE,0BAAoC,CAAC,CAAA;YACtG,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;IAED;;;OAGG;IACH,iCAAiC;QAC/B,OAAO,IAAI,CAAC,+BAA+B,CAAA;IAC7C,CAAC;;AAnIH,sDAoIC;AAhIyB,wCAAkB,GAAG,mBAAmB,CAAA"}
@@ -8,6 +8,15 @@ import { AuthProvider } from './authProvider';
8
8
  * Provides tokens using MSAL.
9
9
  */
10
10
  export declare class MsalTokenProvider implements AuthProvider {
11
+ private readonly _agenticTokenCache;
12
+ readonly connectionSettings?: AuthConfiguration;
13
+ constructor(connectionSettings?: AuthConfiguration);
14
+ /**
15
+ * Gets an access token using the auth configuration from the MsalTokenProvider instance and the provided scope.
16
+ * @param scope The scope for the token.
17
+ * @returns A promise that resolves to the access token.
18
+ */
19
+ getAccessToken(scope: string): Promise<string>;
11
20
  /**
12
21
  * Gets an access token.
13
22
  * @param authConfig The authentication configuration.
@@ -15,7 +24,22 @@ export declare class MsalTokenProvider implements AuthProvider {
15
24
  * @returns A promise that resolves to the access token.
16
25
  */
17
26
  getAccessToken(authConfig: AuthConfiguration, scope: string): Promise<string>;
27
+ acquireTokenOnBehalfOf(scopes: string[], oboAssertion: string): Promise<string>;
18
28
  acquireTokenOnBehalfOf(authConfig: AuthConfiguration, scopes: string[], oboAssertion: string): Promise<string>;
29
+ getAgenticInstanceToken(agentAppInstanceId: string): Promise<string>;
30
+ /**
31
+ * Does a direct HTTP call to acquire a token for agentic scenarios - do not use this directly!
32
+ * This method will be removed once MSAL is updated with the necessary features.
33
+ * (This is required in order to pass additional parameters into the auth call)
34
+ * @param clientId
35
+ * @param clientAssertion
36
+ * @param scopes
37
+ * @param tokenBodyParameters
38
+ * @returns
39
+ */
40
+ private acquireTokenByForAgenticScenarios;
41
+ getAgenticUserToken(agentAppInstanceId: string, agenticUserId: string, scopes: string[]): Promise<string>;
42
+ getAgenticApplicationToken(agentAppInstanceId: string): Promise<string>;
19
43
  private readonly sysOptions;
20
44
  /**
21
45
  * Acquires a token using a user-assigned identity.
@@ -45,6 +69,13 @@ export declare class MsalTokenProvider implements AuthProvider {
45
69
  * @returns A promise that resolves to the access token.
46
70
  */
47
71
  private acquireAccessTokenViaFIC;
72
+ /**
73
+ * Acquires a token using a Workload Identity client assertion.
74
+ * @param authConfig The authentication configuration.
75
+ * @param scope The scope for the token.
76
+ * @returns A promise that resolves to the access token.
77
+ */
78
+ private acquireAccessTokenViaWID;
48
79
  /**
49
80
  * Fetches an external token.
50
81
  * @param FICClientId The FIC client ID.
@@ -9,8 +9,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.MsalTokenProvider = void 0;
11
11
  const msal_node_1 = require("@azure/msal-node");
12
+ const axios_1 = __importDefault(require("axios"));
12
13
  const logger_1 = require("@microsoft/agents-activity/logger");
13
14
  const uuid_1 = require("uuid");
15
+ const MemoryCache_1 = require("./MemoryCache");
14
16
  const fs_1 = __importDefault(require("fs"));
15
17
  const crypto_1 = __importDefault(require("crypto"));
16
18
  const audience = 'api://AzureADTokenExchange';
@@ -19,7 +21,7 @@ const logger = (0, logger_1.debug)('agents:msal');
19
21
  * Provides tokens using MSAL.
20
22
  */
21
23
  class MsalTokenProvider {
22
- constructor() {
24
+ constructor(connectionSettings) {
23
25
  this.sysOptions = {
24
26
  loggerOptions: {
25
27
  logLevel: msal_node_1.LogLevel.Trace,
@@ -46,32 +48,46 @@ class MsalTokenProvider {
46
48
  piiLoggingEnabled: false
47
49
  }
48
50
  };
51
+ this._agenticTokenCache = new MemoryCache_1.MemoryCache();
52
+ this.connectionSettings = connectionSettings;
49
53
  }
50
- /**
51
- * Gets an access token.
52
- * @param authConfig The authentication configuration.
53
- * @param scope The scope for the token.
54
- * @returns A promise that resolves to the access token.
55
- */
56
- async getAccessToken(authConfig, scope) {
54
+ async getAccessToken(authConfigOrScope, scope) {
55
+ let authConfig;
56
+ let actualScope;
57
+ if (typeof authConfigOrScope === 'string') {
58
+ // Called as getAccessToken(scope)
59
+ if (!this.connectionSettings) {
60
+ throw new Error('Connection settings must be provided to constructor when calling getAccessToken(scope)');
61
+ }
62
+ authConfig = this.connectionSettings;
63
+ actualScope = authConfigOrScope;
64
+ }
65
+ else {
66
+ // Called as getAccessToken(authConfig, scope)
67
+ authConfig = authConfigOrScope;
68
+ actualScope = scope;
69
+ }
57
70
  if (!authConfig.clientId && process.env.NODE_ENV !== 'production') {
58
71
  return '';
59
72
  }
60
73
  let token;
61
- if (authConfig.FICClientId !== undefined) {
62
- token = await this.acquireAccessTokenViaFIC(authConfig, scope);
74
+ if (authConfig.WIDAssertionFile !== undefined) {
75
+ token = await this.acquireAccessTokenViaWID(authConfig, actualScope);
76
+ }
77
+ else if (authConfig.FICClientId !== undefined) {
78
+ token = await this.acquireAccessTokenViaFIC(authConfig, actualScope);
63
79
  }
64
80
  else if (authConfig.clientSecret !== undefined) {
65
- token = await this.acquireAccessTokenViaSecret(authConfig, scope);
81
+ token = await this.acquireAccessTokenViaSecret(authConfig, actualScope);
66
82
  }
67
83
  else if (authConfig.certPemFile !== undefined &&
68
84
  authConfig.certKeyFile !== undefined) {
69
- token = await this.acquireTokenWithCertificate(authConfig, scope);
85
+ token = await this.acquireTokenWithCertificate(authConfig, actualScope);
70
86
  }
71
87
  else if (authConfig.clientSecret === undefined &&
72
88
  authConfig.certPemFile === undefined &&
73
89
  authConfig.certKeyFile === undefined) {
74
- token = await this.acquireTokenWithUserAssignedIdentity(authConfig, scope);
90
+ token = await this.acquireTokenWithUserAssignedIdentity(authConfig, actualScope);
75
91
  }
76
92
  else {
77
93
  throw new Error('Invalid authConfig. ');
@@ -81,7 +97,25 @@ class MsalTokenProvider {
81
97
  }
82
98
  return token;
83
99
  }
84
- async acquireTokenOnBehalfOf(authConfig, scopes, oboAssertion) {
100
+ async acquireTokenOnBehalfOf(authConfigOrScopes, scopesOrOboAssertion, oboAssertion) {
101
+ let authConfig;
102
+ let actualScopes;
103
+ let actualOboAssertion;
104
+ if (Array.isArray(authConfigOrScopes)) {
105
+ // Called as acquireTokenOnBehalfOf(scopes, oboAssertion)
106
+ if (!this.connectionSettings) {
107
+ throw new Error('Connection settings must be provided to constructor when calling acquireTokenOnBehalfOf(scopes, oboAssertion)');
108
+ }
109
+ authConfig = this.connectionSettings;
110
+ actualScopes = authConfigOrScopes;
111
+ actualOboAssertion = scopesOrOboAssertion;
112
+ }
113
+ else {
114
+ // Called as acquireTokenOnBehalfOf(authConfig, scopes, oboAssertion)
115
+ authConfig = authConfigOrScopes;
116
+ actualScopes = scopesOrOboAssertion;
117
+ actualOboAssertion = oboAssertion;
118
+ }
85
119
  const cca = new msal_node_1.ConfidentialClientApplication({
86
120
  auth: {
87
121
  clientId: authConfig.clientId,
@@ -91,11 +125,107 @@ class MsalTokenProvider {
91
125
  system: this.sysOptions
92
126
  });
93
127
  const token = await cca.acquireTokenOnBehalfOf({
94
- oboAssertion,
95
- scopes
128
+ oboAssertion: actualOboAssertion,
129
+ scopes: actualScopes
96
130
  });
97
131
  return token === null || token === void 0 ? void 0 : token.accessToken;
98
132
  }
133
+ async getAgenticInstanceToken(agentAppInstanceId) {
134
+ logger.debug('Getting agentic instance token');
135
+ if (!this.connectionSettings) {
136
+ throw new Error('Connection settings must be provided when calling getAgenticInstanceToken');
137
+ }
138
+ const appToken = await this.getAgenticApplicationToken(agentAppInstanceId);
139
+ const cca = new msal_node_1.ConfidentialClientApplication({
140
+ auth: {
141
+ clientId: agentAppInstanceId,
142
+ clientAssertion: appToken,
143
+ authority: `${this.connectionSettings.authority}/${this.connectionSettings.tenantId || 'botframework.com'}`,
144
+ },
145
+ system: this.sysOptions
146
+ });
147
+ const token = await cca.acquireTokenByClientCredential({
148
+ scopes: ['api://AzureAdTokenExchange/.default'],
149
+ correlationId: (0, uuid_1.v4)()
150
+ });
151
+ if (!(token === null || token === void 0 ? void 0 : token.accessToken)) {
152
+ throw new Error(`Failed to acquire instance token for agent instance: ${agentAppInstanceId}`);
153
+ }
154
+ return token.accessToken;
155
+ }
156
+ /**
157
+ * Does a direct HTTP call to acquire a token for agentic scenarios - do not use this directly!
158
+ * This method will be removed once MSAL is updated with the necessary features.
159
+ * (This is required in order to pass additional parameters into the auth call)
160
+ * @param clientId
161
+ * @param clientAssertion
162
+ * @param scopes
163
+ * @param tokenBodyParameters
164
+ * @returns
165
+ */
166
+ async acquireTokenByForAgenticScenarios(clientId, clientAssertion, scopes, tokenBodyParameters) {
167
+ if (!this.connectionSettings) {
168
+ throw new Error('Connection settings must be provided when calling getAgenticInstanceToken');
169
+ }
170
+ // Check cache first
171
+ const cacheKey = `${clientId}/${Object.keys(tokenBodyParameters).map(key => key !== 'user_federated_identity_credential' ? `${key}=${tokenBodyParameters[key]}` : '').join('&')}/${scopes.join(';')}`;
172
+ if (this._agenticTokenCache.get(cacheKey)) {
173
+ return this._agenticTokenCache.get(cacheKey);
174
+ }
175
+ const url = `${this.connectionSettings.authority}/${this.connectionSettings.tenantId || 'botframework.com'}/oauth2/v2.0/token`;
176
+ const data = {
177
+ client_id: clientId,
178
+ scope: scopes.join(' '),
179
+ ...tokenBodyParameters
180
+ };
181
+ if (clientAssertion) {
182
+ data.client_assertion_type = 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer';
183
+ data.client_assertion = clientAssertion;
184
+ }
185
+ else {
186
+ data.client_secret = this.connectionSettings.clientSecret;
187
+ }
188
+ const token = await axios_1.default.post(url, data, {
189
+ headers: {
190
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
191
+ }
192
+ }).catch((error) => {
193
+ logger.error('Error acquiring token: ', error.toJSON());
194
+ throw error;
195
+ });
196
+ // capture token, expire local cache 5 minutes early
197
+ this._agenticTokenCache.set(cacheKey, token.data.access_token, token.data.expires_in - 300);
198
+ return token.data.access_token;
199
+ }
200
+ async getAgenticUserToken(agentAppInstanceId, agenticUserId, scopes) {
201
+ logger.debug('Getting agentic user token');
202
+ const agentToken = await this.getAgenticApplicationToken(agentAppInstanceId);
203
+ const instanceToken = await this.getAgenticInstanceToken(agentAppInstanceId);
204
+ const token = await this.acquireTokenByForAgenticScenarios(agentAppInstanceId, agentToken, scopes, {
205
+ user_id: agenticUserId,
206
+ user_federated_identity_credential: instanceToken,
207
+ grant_type: 'user_fic',
208
+ });
209
+ if (!token) {
210
+ throw new Error(`Failed to acquire instance token for user token: ${agentAppInstanceId}`);
211
+ }
212
+ return token;
213
+ }
214
+ async getAgenticApplicationToken(agentAppInstanceId) {
215
+ var _a;
216
+ if (!((_a = this.connectionSettings) === null || _a === void 0 ? void 0 : _a.clientId)) {
217
+ throw new Error('Connection settings must be provided when calling getAgenticApplicationToken');
218
+ }
219
+ logger.debug('Getting agentic application token');
220
+ const token = await this.acquireTokenByForAgenticScenarios(this.connectionSettings.clientId, undefined, ['api://AzureAdTokenExchange/.default'], {
221
+ grant_type: 'client_credentials',
222
+ fmi_path: agentAppInstanceId,
223
+ });
224
+ if (!token) {
225
+ throw new Error(`Failed to acquire token for agent instance: ${agentAppInstanceId}`);
226
+ }
227
+ return token;
228
+ }
99
229
  /**
100
230
  * Acquires a token using a user-assigned identity.
101
231
  * @param authConfig The authentication configuration.
@@ -191,6 +321,27 @@ class MsalTokenProvider {
191
321
  logger.debug('got token using FIC client assertion');
192
322
  return token === null || token === void 0 ? void 0 : token.accessToken;
193
323
  }
324
+ /**
325
+ * Acquires a token using a Workload Identity client assertion.
326
+ * @param authConfig The authentication configuration.
327
+ * @param scope The scope for the token.
328
+ * @returns A promise that resolves to the access token.
329
+ */
330
+ async acquireAccessTokenViaWID(authConfig, scope) {
331
+ const scopes = [`${scope}/.default`];
332
+ const clientAssertion = fs_1.default.readFileSync(authConfig.WIDAssertionFile, 'utf8');
333
+ const cca = new msal_node_1.ConfidentialClientApplication({
334
+ auth: {
335
+ clientId: authConfig.clientId,
336
+ authority: `https://login.microsoftonline.com/${authConfig.tenantId}`,
337
+ clientAssertion
338
+ },
339
+ system: this.sysOptions
340
+ });
341
+ const token = await cca.acquireTokenByClientCredential({ scopes });
342
+ logger.info('got token using WID client assertion');
343
+ return token === null || token === void 0 ? void 0 : token.accessToken;
344
+ }
194
345
  /**
195
346
  * Fetches an external token.
196
347
  * @param FICClientId The FIC client ID.
@@ -1 +1 @@
1
- {"version":3,"file":"msalTokenProvider.js","sourceRoot":"","sources":["../../../src/auth/msalTokenProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"msalTokenProvider.js","sourceRoot":"","sources":["../../../src/auth/msalTokenProvider.ts"],"names":[],"mappings":"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"}