@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.
- package/dist/package.json +10 -6
- package/dist/src/activityWireCompat.js +8 -3
- package/dist/src/activityWireCompat.js.map +1 -1
- package/dist/src/agent-client/agentClient.js +7 -3
- package/dist/src/agent-client/agentClient.js.map +1 -1
- package/dist/src/agent-client/agentResponseHandler.js +6 -2
- package/dist/src/agent-client/agentResponseHandler.js.map +1 -1
- package/dist/src/app/agentApplication.d.ts +26 -11
- package/dist/src/app/agentApplication.js +94 -86
- package/dist/src/app/agentApplication.js.map +1 -1
- package/dist/src/app/agentApplicationBuilder.d.ts +2 -2
- package/dist/src/app/agentApplicationBuilder.js.map +1 -1
- package/dist/src/app/agentApplicationOptions.d.ts +9 -2
- package/dist/src/app/appRoute.d.ts +7 -0
- package/dist/src/app/attachmentDownloader.d.ts +13 -3
- package/dist/src/app/attachmentDownloader.js +16 -3
- package/dist/src/app/attachmentDownloader.js.map +1 -1
- package/dist/src/app/{authorization.d.ts → auth/authorization.d.ts} +33 -139
- package/dist/src/app/auth/authorization.js +188 -0
- package/dist/src/app/auth/authorization.js.map +1 -0
- package/dist/src/app/auth/authorizationManager.d.ts +71 -0
- package/dist/src/app/auth/authorizationManager.js +170 -0
- package/dist/src/app/auth/authorizationManager.js.map +1 -0
- package/dist/src/app/auth/handlerStorage.d.ts +36 -0
- package/dist/src/app/auth/handlerStorage.js +62 -0
- package/dist/src/app/auth/handlerStorage.js.map +1 -0
- package/dist/src/app/auth/handlers/agenticAuthorization.d.ts +97 -0
- package/dist/src/app/auth/handlers/agenticAuthorization.js +145 -0
- package/dist/src/app/auth/handlers/agenticAuthorization.js.map +1 -0
- package/dist/src/app/auth/handlers/azureBotAuthorization.d.ts +222 -0
- package/dist/src/app/auth/handlers/azureBotAuthorization.js +428 -0
- package/dist/src/app/auth/handlers/azureBotAuthorization.js.map +1 -0
- package/dist/src/app/auth/handlers/index.d.ts +2 -0
- package/dist/src/app/auth/handlers/index.js +19 -0
- package/dist/src/app/auth/handlers/index.js.map +1 -0
- package/dist/src/app/auth/index.d.ts +2 -0
- package/dist/src/app/auth/index.js +19 -0
- package/dist/src/app/auth/index.js.map +1 -0
- package/dist/src/app/auth/types.d.ts +104 -0
- package/dist/src/app/auth/types.js +24 -0
- package/dist/src/app/auth/types.js.map +1 -0
- package/dist/src/app/index.d.ts +2 -3
- package/dist/src/app/index.js +2 -3
- package/dist/src/app/index.js.map +1 -1
- package/dist/src/app/inputFileDownloader.d.ts +10 -3
- package/dist/src/app/routeList.d.ts +1 -1
- package/dist/src/app/routeList.js +22 -5
- package/dist/src/app/routeList.js.map +1 -1
- package/dist/src/app/streaming/streamingResponse.d.ts +11 -1
- package/dist/src/app/streaming/streamingResponse.js +17 -2
- package/dist/src/app/streaming/streamingResponse.js.map +1 -1
- package/dist/src/app/turnState.d.ts +2 -38
- package/dist/src/app/turnState.js +1 -46
- package/dist/src/app/turnState.js.map +1 -1
- package/dist/src/auth/MemoryCache.d.ts +16 -0
- package/dist/src/auth/MemoryCache.js +58 -0
- package/dist/src/auth/MemoryCache.js.map +1 -0
- package/dist/src/auth/authConfiguration.d.ts +44 -2
- package/dist/src/auth/authConfiguration.js +218 -53
- package/dist/src/auth/authConfiguration.js.map +1 -1
- package/dist/src/auth/authConstants.d.ts +11 -0
- package/dist/src/auth/authConstants.js +15 -0
- package/dist/src/auth/authConstants.js.map +1 -0
- package/dist/src/auth/authProvider.d.ts +23 -0
- package/dist/src/auth/connections.d.ts +40 -0
- package/dist/src/auth/connections.js +7 -0
- package/dist/src/auth/connections.js.map +1 -0
- package/dist/src/auth/index.d.ts +2 -0
- package/dist/src/auth/index.js +2 -0
- package/dist/src/auth/index.js.map +1 -1
- package/dist/src/auth/jwt-middleware.js +31 -18
- package/dist/src/auth/jwt-middleware.js.map +1 -1
- package/dist/src/auth/msalConnectionManager.d.ts +63 -0
- package/dist/src/auth/msalConnectionManager.js +124 -0
- package/dist/src/auth/msalConnectionManager.js.map +1 -0
- package/dist/src/auth/msalTokenProvider.d.ts +31 -0
- package/dist/src/auth/msalTokenProvider.js +167 -16
- package/dist/src/auth/msalTokenProvider.js.map +1 -1
- package/dist/src/baseAdapter.d.ts +10 -25
- package/dist/src/baseAdapter.js +2 -15
- package/dist/src/baseAdapter.js.map +1 -1
- package/dist/src/cloudAdapter.d.ts +40 -23
- package/dist/src/cloudAdapter.js +132 -56
- package/dist/src/cloudAdapter.js.map +1 -1
- package/dist/src/connector-client/connectorClient.d.ts +9 -0
- package/dist/src/connector-client/connectorClient.js +39 -9
- package/dist/src/connector-client/connectorClient.js.map +1 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/oauth/index.d.ts +0 -1
- package/dist/src/oauth/index.js +0 -1
- package/dist/src/oauth/index.js.map +1 -1
- package/dist/src/oauth/userTokenClient.d.ts +30 -13
- package/dist/src/oauth/userTokenClient.js +64 -26
- package/dist/src/oauth/userTokenClient.js.map +1 -1
- package/dist/src/oauth/userTokenClient.types.d.ts +19 -6
- package/dist/src/turnContext.d.ts +7 -1
- package/dist/src/turnContext.js +11 -4
- package/dist/src/turnContext.js.map +1 -1
- package/package.json +10 -6
- package/src/activityWireCompat.ts +8 -3
- package/src/agent-client/agentClient.ts +9 -3
- package/src/agent-client/agentResponseHandler.ts +5 -2
- package/src/app/agentApplication.ts +98 -79
- package/src/app/agentApplicationBuilder.ts +2 -2
- package/src/app/agentApplicationOptions.ts +10 -2
- package/src/app/appRoute.ts +8 -0
- package/src/app/attachmentDownloader.ts +18 -3
- package/src/app/auth/authorization.ts +252 -0
- package/src/app/auth/authorizationManager.ts +213 -0
- package/src/app/auth/handlerStorage.ts +61 -0
- package/src/app/auth/handlers/agenticAuthorization.ts +194 -0
- package/src/app/auth/handlers/azureBotAuthorization.ts +599 -0
- package/src/app/auth/handlers/index.ts +2 -0
- package/src/app/auth/index.ts +2 -0
- package/src/app/auth/types.ts +111 -0
- package/src/app/index.ts +2 -3
- package/src/app/inputFileDownloader.ts +11 -3
- package/src/app/routeList.ts +24 -5
- package/src/app/streaming/streamingResponse.ts +20 -3
- package/src/app/turnState.ts +2 -61
- package/src/auth/MemoryCache.ts +59 -0
- package/src/auth/authConfiguration.ts +258 -52
- package/src/auth/authConstants.ts +11 -0
- package/src/auth/authProvider.ts +31 -0
- package/src/auth/connections.ts +46 -0
- package/src/auth/index.ts +2 -0
- package/src/auth/jwt-middleware.ts +38 -21
- package/src/auth/msalConnectionManager.ts +150 -0
- package/src/auth/msalTokenProvider.ts +209 -9
- package/src/baseAdapter.ts +10 -29
- package/src/cloudAdapter.ts +192 -67
- package/src/connector-client/connectorClient.ts +49 -10
- package/src/index.ts +0 -1
- package/src/oauth/index.ts +0 -1
- package/src/oauth/userTokenClient.ts +79 -23
- package/src/oauth/userTokenClient.types.ts +20 -8
- package/src/turnContext.ts +16 -5
- package/dist/src/app/authorization.js +0 -387
- package/dist/src/app/authorization.js.map +0 -1
- package/dist/src/claimsIdentity.d.ts +0 -35
- package/dist/src/claimsIdentity.js +0 -43
- package/dist/src/claimsIdentity.js.map +0 -1
- package/dist/src/oauth/oAuthFlow.d.ts +0 -119
- package/dist/src/oauth/oAuthFlow.js +0 -316
- package/dist/src/oauth/oAuthFlow.js.map +0 -1
- package/src/app/authorization.ts +0 -432
- package/src/claimsIdentity.ts +0 -47
- 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"}
|
package/dist/src/auth/index.d.ts
CHANGED
package/dist/src/auth/index.js
CHANGED
|
@@ -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
|
|
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
|
|
64
|
+
if (err) {
|
|
51
65
|
logger.error('jwt.verify ', JSON.stringify(err));
|
|
52
66
|
reject(err);
|
|
53
67
|
return;
|
|
54
68
|
}
|
|
55
|
-
|
|
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":";AAAA;;;GAGG;;;;;;AAKH,wDAA0D;AAC1D,gEAA6F;AAC7F,8DAAyD;AAEzD,MAAM,MAAM,GAAG,IAAA,cAAK,EAAC,uBAAuB,CAAC,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,GAAG,KAAK,EAAE,GAAW,EAAE,MAAyB,EAAuB,EAAE;IACxF,MAAM,MAAM,
|
|
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":"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"}
|
|
@@ -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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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.
|
|
62
|
-
token = await this.
|
|
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,
|
|
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,
|
|
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,
|
|
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(
|
|
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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"}
|