@microsoft/teams.apps 2.0.0-preview.7 → 2.0.0-preview.8
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/app.d.ts +47 -41
- package/dist/app.js +26 -3
- package/dist/app.process.js +9 -16
- package/dist/middleware/auth/jwt-validator.d.ts +60 -0
- package/dist/middleware/auth/jwt-validator.js +213 -0
- package/dist/middleware/index.d.ts +1 -0
- package/dist/middleware/index.js +2 -1
- package/dist/middleware/jwt-validation-middleware.d.ts +11 -0
- package/dist/middleware/jwt-validation-middleware.js +46 -0
- package/dist/plugins/http/plugin.d.ts +9 -3
- package/dist/plugins/http/plugin.js +30 -12
- package/dist/utils/asserts.d.ts +1 -0
- package/dist/utils/asserts.js +12 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +3 -2
- package/package.json +5 -5
package/dist/app.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ActivityLike, ConversationReference, Credentials, IToken, StripMentionsTextOptions } from '@microsoft/teams.api';
|
|
1
|
+
import { ActivityLike, ChannelID, ConversationReference, Credentials, IToken, StripMentionsTextOptions } from '@microsoft/teams.api';
|
|
2
2
|
import { EventEmitter } from '@microsoft/teams.common/events';
|
|
3
3
|
import * as http from '@microsoft/teams.common/http';
|
|
4
4
|
import { ILogger } from '@microsoft/teams.common/logging';
|
|
@@ -49,6 +49,10 @@ export type AppOptions<TPlugin extends IPlugin> = Partial<Credentials> & {
|
|
|
49
49
|
* Activity Options
|
|
50
50
|
*/
|
|
51
51
|
readonly activity?: AppActivityOptions;
|
|
52
|
+
/**
|
|
53
|
+
* Skip authentication for HTTP requests
|
|
54
|
+
*/
|
|
55
|
+
readonly skipAuth?: boolean;
|
|
52
56
|
};
|
|
53
57
|
export type AppActivityOptions = {
|
|
54
58
|
readonly mentions?: {
|
|
@@ -148,7 +152,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
148
152
|
timestamp?: Date | undefined;
|
|
149
153
|
locale?: string | undefined;
|
|
150
154
|
localTimestamp?: Date | undefined;
|
|
151
|
-
channelId?:
|
|
155
|
+
channelId?: ChannelID | undefined;
|
|
152
156
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
153
157
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
154
158
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -176,7 +180,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
176
180
|
timestamp?: Date | undefined;
|
|
177
181
|
locale?: string | undefined;
|
|
178
182
|
localTimestamp?: Date | undefined;
|
|
179
|
-
channelId?:
|
|
183
|
+
channelId?: ChannelID | undefined;
|
|
180
184
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
181
185
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
182
186
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -198,7 +202,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
198
202
|
timestamp?: Date | undefined;
|
|
199
203
|
locale?: string | undefined;
|
|
200
204
|
localTimestamp?: Date | undefined;
|
|
201
|
-
channelId?:
|
|
205
|
+
channelId?: ChannelID | undefined;
|
|
202
206
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
203
207
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
204
208
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -219,7 +223,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
219
223
|
timestamp?: Date | undefined;
|
|
220
224
|
locale?: string | undefined;
|
|
221
225
|
localTimestamp?: Date | undefined;
|
|
222
|
-
channelId?:
|
|
226
|
+
channelId?: ChannelID | undefined;
|
|
223
227
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
224
228
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
225
229
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -240,7 +244,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
240
244
|
timestamp?: Date | undefined;
|
|
241
245
|
locale?: string | undefined;
|
|
242
246
|
localTimestamp?: Date | undefined;
|
|
243
|
-
channelId?:
|
|
247
|
+
channelId?: ChannelID | undefined;
|
|
244
248
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
245
249
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
246
250
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -268,7 +272,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
268
272
|
timestamp?: Date | undefined;
|
|
269
273
|
locale?: string | undefined;
|
|
270
274
|
localTimestamp?: Date | undefined;
|
|
271
|
-
channelId?:
|
|
275
|
+
channelId?: ChannelID | undefined;
|
|
272
276
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
273
277
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
274
278
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -296,7 +300,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
296
300
|
timestamp?: Date | undefined;
|
|
297
301
|
locale?: string | undefined;
|
|
298
302
|
localTimestamp?: Date | undefined;
|
|
299
|
-
channelId?:
|
|
303
|
+
channelId?: ChannelID | undefined;
|
|
300
304
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
301
305
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
302
306
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -326,7 +330,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
326
330
|
timestamp?: Date | undefined;
|
|
327
331
|
locale?: string | undefined;
|
|
328
332
|
localTimestamp?: Date | undefined;
|
|
329
|
-
channelId?:
|
|
333
|
+
channelId?: ChannelID | undefined;
|
|
330
334
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
331
335
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
332
336
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -356,7 +360,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
356
360
|
timestamp?: Date | undefined;
|
|
357
361
|
locale?: string | undefined;
|
|
358
362
|
localTimestamp?: Date | undefined;
|
|
359
|
-
channelId?:
|
|
363
|
+
channelId?: ChannelID | undefined;
|
|
360
364
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
361
365
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
362
366
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -379,7 +383,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
379
383
|
timestamp?: Date | undefined;
|
|
380
384
|
locale?: string | undefined;
|
|
381
385
|
localTimestamp?: Date | undefined;
|
|
382
|
-
channelId?:
|
|
386
|
+
channelId?: ChannelID | undefined;
|
|
383
387
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
384
388
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
385
389
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -401,7 +405,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
401
405
|
timestamp?: Date | undefined;
|
|
402
406
|
locale?: string | undefined;
|
|
403
407
|
localTimestamp?: Date | undefined;
|
|
404
|
-
channelId?:
|
|
408
|
+
channelId?: ChannelID | undefined;
|
|
405
409
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
406
410
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
407
411
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -423,7 +427,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
423
427
|
timestamp?: Date | undefined;
|
|
424
428
|
locale?: string | undefined;
|
|
425
429
|
localTimestamp?: Date | undefined;
|
|
426
|
-
channelId?:
|
|
430
|
+
channelId?: ChannelID | undefined;
|
|
427
431
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
428
432
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
429
433
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -445,7 +449,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
445
449
|
timestamp?: Date | undefined;
|
|
446
450
|
locale?: string | undefined;
|
|
447
451
|
localTimestamp?: Date | undefined;
|
|
448
|
-
channelId?:
|
|
452
|
+
channelId?: ChannelID | undefined;
|
|
449
453
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
450
454
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
451
455
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -467,7 +471,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
467
471
|
timestamp?: Date | undefined;
|
|
468
472
|
locale?: string | undefined;
|
|
469
473
|
localTimestamp?: Date | undefined;
|
|
470
|
-
channelId?:
|
|
474
|
+
channelId?: ChannelID | undefined;
|
|
471
475
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
472
476
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
473
477
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -489,7 +493,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
489
493
|
timestamp?: Date | undefined;
|
|
490
494
|
locale?: string | undefined;
|
|
491
495
|
localTimestamp?: Date | undefined;
|
|
492
|
-
channelId?:
|
|
496
|
+
channelId?: ChannelID | undefined;
|
|
493
497
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
494
498
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
495
499
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -511,7 +515,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
511
515
|
timestamp?: Date | undefined;
|
|
512
516
|
locale?: string | undefined;
|
|
513
517
|
localTimestamp?: Date | undefined;
|
|
514
|
-
channelId?:
|
|
518
|
+
channelId?: ChannelID | undefined;
|
|
515
519
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
516
520
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
517
521
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -533,7 +537,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
533
537
|
timestamp?: Date | undefined;
|
|
534
538
|
locale?: string | undefined;
|
|
535
539
|
localTimestamp?: Date | undefined;
|
|
536
|
-
channelId?:
|
|
540
|
+
channelId?: ChannelID | undefined;
|
|
537
541
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
538
542
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
539
543
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -555,7 +559,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
555
559
|
timestamp?: Date | undefined;
|
|
556
560
|
locale?: string | undefined;
|
|
557
561
|
localTimestamp?: Date | undefined;
|
|
558
|
-
channelId?:
|
|
562
|
+
channelId?: ChannelID | undefined;
|
|
559
563
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
560
564
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
561
565
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -577,7 +581,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
577
581
|
timestamp?: Date | undefined;
|
|
578
582
|
locale?: string | undefined;
|
|
579
583
|
localTimestamp?: Date | undefined;
|
|
580
|
-
channelId?:
|
|
584
|
+
channelId?: ChannelID | undefined;
|
|
581
585
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
582
586
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
583
587
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -599,7 +603,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
599
603
|
timestamp?: Date | undefined;
|
|
600
604
|
locale?: string | undefined;
|
|
601
605
|
localTimestamp?: Date | undefined;
|
|
602
|
-
channelId?:
|
|
606
|
+
channelId?: ChannelID | undefined;
|
|
603
607
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
604
608
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
605
609
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -621,7 +625,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
621
625
|
timestamp?: Date | undefined;
|
|
622
626
|
locale?: string | undefined;
|
|
623
627
|
localTimestamp?: Date | undefined;
|
|
624
|
-
channelId?:
|
|
628
|
+
channelId?: ChannelID | undefined;
|
|
625
629
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
626
630
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
627
631
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -643,7 +647,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
643
647
|
timestamp?: Date | undefined;
|
|
644
648
|
locale?: string | undefined;
|
|
645
649
|
localTimestamp?: Date | undefined;
|
|
646
|
-
channelId?:
|
|
650
|
+
channelId?: ChannelID | undefined;
|
|
647
651
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
648
652
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
649
653
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -665,7 +669,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
665
669
|
timestamp?: Date | undefined;
|
|
666
670
|
locale?: string | undefined;
|
|
667
671
|
localTimestamp?: Date | undefined;
|
|
668
|
-
channelId?:
|
|
672
|
+
channelId?: ChannelID | undefined;
|
|
669
673
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
670
674
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
671
675
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -687,7 +691,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
687
691
|
timestamp?: Date | undefined;
|
|
688
692
|
locale?: string | undefined;
|
|
689
693
|
localTimestamp?: Date | undefined;
|
|
690
|
-
channelId?:
|
|
694
|
+
channelId?: ChannelID | undefined;
|
|
691
695
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
692
696
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
693
697
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -709,7 +713,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
709
713
|
timestamp?: Date | undefined;
|
|
710
714
|
locale?: string | undefined;
|
|
711
715
|
localTimestamp?: Date | undefined;
|
|
712
|
-
channelId?:
|
|
716
|
+
channelId?: ChannelID | undefined;
|
|
713
717
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
714
718
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
715
719
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -731,7 +735,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
731
735
|
timestamp?: Date | undefined;
|
|
732
736
|
locale?: string | undefined;
|
|
733
737
|
localTimestamp?: Date | undefined;
|
|
734
|
-
channelId?:
|
|
738
|
+
channelId?: ChannelID | undefined;
|
|
735
739
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
736
740
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
737
741
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -759,7 +763,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
759
763
|
timestamp?: Date | undefined;
|
|
760
764
|
locale?: string | undefined;
|
|
761
765
|
localTimestamp?: Date | undefined;
|
|
762
|
-
channelId?:
|
|
766
|
+
channelId?: ChannelID | undefined;
|
|
763
767
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
764
768
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
765
769
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -783,7 +787,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
783
787
|
timestamp?: Date | undefined;
|
|
784
788
|
locale?: string | undefined;
|
|
785
789
|
localTimestamp?: Date | undefined;
|
|
786
|
-
channelId?:
|
|
790
|
+
channelId?: ChannelID | undefined;
|
|
787
791
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
788
792
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
789
793
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -804,7 +808,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
804
808
|
timestamp?: Date | undefined;
|
|
805
809
|
locale?: string | undefined;
|
|
806
810
|
localTimestamp?: Date | undefined;
|
|
807
|
-
channelId?:
|
|
811
|
+
channelId?: ChannelID | undefined;
|
|
808
812
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
809
813
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
810
814
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -826,7 +830,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
826
830
|
timestamp?: Date | undefined;
|
|
827
831
|
locale?: string | undefined;
|
|
828
832
|
localTimestamp?: Date | undefined;
|
|
829
|
-
channelId?:
|
|
833
|
+
channelId?: ChannelID | undefined;
|
|
830
834
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
831
835
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
832
836
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -848,7 +852,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
848
852
|
timestamp?: Date | undefined;
|
|
849
853
|
locale?: string | undefined;
|
|
850
854
|
localTimestamp?: Date | undefined;
|
|
851
|
-
channelId?:
|
|
855
|
+
channelId?: ChannelID | undefined;
|
|
852
856
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
853
857
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
854
858
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -873,7 +877,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
873
877
|
timestamp?: Date | undefined;
|
|
874
878
|
locale?: string | undefined;
|
|
875
879
|
localTimestamp?: Date | undefined;
|
|
876
|
-
channelId?:
|
|
880
|
+
channelId?: ChannelID | undefined;
|
|
877
881
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
878
882
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
879
883
|
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
@@ -893,7 +897,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
893
897
|
timestamp?: Date | undefined;
|
|
894
898
|
locale?: string | undefined;
|
|
895
899
|
localTimestamp?: Date | undefined;
|
|
896
|
-
channelId?:
|
|
900
|
+
channelId?: ChannelID | undefined;
|
|
897
901
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
898
902
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
899
903
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -913,7 +917,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
913
917
|
timestamp?: Date | undefined;
|
|
914
918
|
locale?: string | undefined;
|
|
915
919
|
localTimestamp?: Date | undefined;
|
|
916
|
-
channelId?:
|
|
920
|
+
channelId?: ChannelID | undefined;
|
|
917
921
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
918
922
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
919
923
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -940,7 +944,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
940
944
|
timestamp?: Date | undefined;
|
|
941
945
|
locale?: string | undefined;
|
|
942
946
|
localTimestamp?: Date | undefined;
|
|
943
|
-
channelId?:
|
|
947
|
+
channelId?: ChannelID | undefined;
|
|
944
948
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
945
949
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
946
950
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -961,7 +965,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
961
965
|
timestamp?: Date | undefined;
|
|
962
966
|
locale?: string | undefined;
|
|
963
967
|
localTimestamp?: Date | undefined;
|
|
964
|
-
channelId?:
|
|
968
|
+
channelId?: ChannelID | undefined;
|
|
965
969
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
966
970
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
967
971
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -983,7 +987,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
983
987
|
timestamp?: Date | undefined;
|
|
984
988
|
locale?: string | undefined;
|
|
985
989
|
localTimestamp?: Date | undefined;
|
|
986
|
-
channelId?:
|
|
990
|
+
channelId?: ChannelID | undefined;
|
|
987
991
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
988
992
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
989
993
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -1005,7 +1009,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
1005
1009
|
timestamp?: Date | undefined;
|
|
1006
1010
|
locale?: string | undefined;
|
|
1007
1011
|
localTimestamp?: Date | undefined;
|
|
1008
|
-
channelId?:
|
|
1012
|
+
channelId?: ChannelID | undefined;
|
|
1009
1013
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
1010
1014
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
1011
1015
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -1026,7 +1030,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
1026
1030
|
timestamp?: Date | undefined;
|
|
1027
1031
|
locale?: string | undefined;
|
|
1028
1032
|
localTimestamp?: Date | undefined;
|
|
1029
|
-
channelId?:
|
|
1033
|
+
channelId?: ChannelID | undefined;
|
|
1030
1034
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
1031
1035
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
1032
1036
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -1047,7 +1051,7 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
1047
1051
|
timestamp?: Date | undefined;
|
|
1048
1052
|
locale?: string | undefined;
|
|
1049
1053
|
localTimestamp?: Date | undefined;
|
|
1050
|
-
channelId?:
|
|
1054
|
+
channelId?: ChannelID | undefined;
|
|
1051
1055
|
from?: import("@microsoft/teams.api").Account | undefined;
|
|
1052
1056
|
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
1053
1057
|
relatesTo?: ConversationReference | undefined;
|
|
@@ -1133,4 +1137,6 @@ export declare class App<TPlugin extends IPlugin = IPlugin> {
|
|
|
1133
1137
|
protected refreshTokens(force?: boolean): Promise<[void, void]>;
|
|
1134
1138
|
protected refreshBotToken(force?: boolean): Promise<void>;
|
|
1135
1139
|
protected refreshGraphToken(force?: boolean): Promise<void>;
|
|
1140
|
+
protected getUserToken(channelId: ChannelID, userId: string): Promise<string>;
|
|
1141
|
+
protected getOrRefreshTenantToken(tenantId?: string): Promise<string | undefined>;
|
|
1136
1142
|
}
|
package/dist/app.js
CHANGED
|
@@ -83,8 +83,8 @@ class App {
|
|
|
83
83
|
}
|
|
84
84
|
get oauth() {
|
|
85
85
|
return {
|
|
86
|
-
...this.options.oauth,
|
|
87
86
|
...oauth_1.DEFAULT_OAUTH_SETTINGS,
|
|
87
|
+
...this.options.oauth,
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
@@ -200,11 +200,14 @@ class App {
|
|
|
200
200
|
return meta.name === 'http';
|
|
201
201
|
});
|
|
202
202
|
if (!httpPlugin) {
|
|
203
|
-
httpPlugin = new plugins_1.HttpPlugin();
|
|
203
|
+
httpPlugin = new plugins_1.HttpPlugin(undefined, { skipAuth: this.options.skipAuth });
|
|
204
204
|
// Casting to any here because a default HttpPlugin is not assignable to TPlugin
|
|
205
205
|
// without a silly level of indirection.
|
|
206
206
|
plugins.unshift(httpPlugin);
|
|
207
207
|
}
|
|
208
|
+
else if (this.options.skipAuth) {
|
|
209
|
+
this.log.warn('skipAuth option has no effect when a custom HTTP plugin is provided. Configure authentication on the plugin directly.');
|
|
210
|
+
}
|
|
208
211
|
this.http = httpPlugin;
|
|
209
212
|
// add injectable items to container
|
|
210
213
|
this.container.register('id', { useValue: this.id });
|
|
@@ -413,6 +416,26 @@ class App {
|
|
|
413
416
|
const graphResponse = await this.api.bots.token.getGraph(this.credentials);
|
|
414
417
|
this._tokens.graph = new teams_api_1.JsonWebToken(graphResponse.access_token);
|
|
415
418
|
}
|
|
419
|
+
async getUserToken(channelId, userId) {
|
|
420
|
+
const res = await this.api.users.token.get({
|
|
421
|
+
channelId,
|
|
422
|
+
userId,
|
|
423
|
+
connectionName: this.oauth.defaultConnectionName,
|
|
424
|
+
});
|
|
425
|
+
return res.token;
|
|
426
|
+
}
|
|
427
|
+
async getOrRefreshTenantToken(tenantId) {
|
|
428
|
+
let appToken = this.tenantTokens.get(tenantId || 'common') || this._tokens.graph?.toString();
|
|
429
|
+
if (this.credentials && !appToken) {
|
|
430
|
+
const { access_token } = await this.api.bots.token.getGraph({
|
|
431
|
+
...this.credentials,
|
|
432
|
+
tenantId: tenantId,
|
|
433
|
+
});
|
|
434
|
+
appToken = access_token;
|
|
435
|
+
this.tenantTokens.set(tenantId || 'common', access_token);
|
|
436
|
+
}
|
|
437
|
+
return appToken;
|
|
438
|
+
}
|
|
416
439
|
}
|
|
417
440
|
exports.App = App;
|
|
418
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBbUM7QUFFbkMsb0RBUThCO0FBQzlCLDJEQUE4RDtBQUM5RCxtRUFBcUQ7QUFDckQsNkRBQXlFO0FBQ3pFLDZEQUF5RTtBQUV6RSxtRUFBa0M7QUFFbEMsK0JBQStDO0FBRS9DLDJDQUFtRDtBQUNuRCw2Q0FNc0I7QUFDdEIsMkNBR3FCO0FBQ3JCLCtDQUF1RTtBQUN2RSwrQ0FBeUM7QUFDekMsK0NBQWlEO0FBQ2pELDJDQUF3QztBQUV4Qyx5REFBMkM7QUFDM0MsbUNBQWdFO0FBQ2hFLHVDQUF1QztBQUN2QyxxQ0FBa0M7QUFpRWxDOztHQUVHO0FBQ0gsTUFBYSxHQUFHO0lBNkVPO0lBNUVaLEdBQUcsQ0FBWTtJQUNmLEtBQUssQ0FBYztJQUNuQixHQUFHLENBQVU7SUFDYixJQUFJLENBQWE7SUFDakIsTUFBTSxDQUFjO0lBQ3BCLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQWU7SUFDMUIsbUJBQW1CLENBQWtDO0lBRTlEOztPQUVHO0lBQ0gsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQzVELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1lBQ3JCLEdBQUcsOEJBQXNCO1NBQzFCLENBQUM7SUFDSixDQUFDO0lB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
|
|
441
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBbUM7QUFFbkMsb0RBUzhCO0FBQzlCLDJEQUE4RDtBQUM5RCxtRUFBcUQ7QUFDckQsNkRBQXlFO0FBQ3pFLDZEQUF5RTtBQUV6RSxtRUFBa0M7QUFFbEMsK0JBQStDO0FBRS9DLDJDQUFtRDtBQUNuRCw2Q0FNc0I7QUFDdEIsMkNBR3FCO0FBQ3JCLCtDQUF1RTtBQUN2RSwrQ0FBeUM7QUFDekMsK0NBQWlEO0FBQ2pELDJDQUF3QztBQUV4Qyx5REFBMkM7QUFDM0MsbUNBQWdFO0FBQ2hFLHVDQUF1QztBQUN2QyxxQ0FBa0M7QUFzRWxDOztHQUVHO0FBQ0gsTUFBYSxHQUFHO0lBNkVPO0lBNUVaLEdBQUcsQ0FBWTtJQUNmLEtBQUssQ0FBYztJQUNuQixHQUFHLENBQVU7SUFDYixJQUFJLENBQWE7SUFDakIsTUFBTSxDQUFjO0lBQ3BCLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQWU7SUFDMUIsbUJBQW1CLENBQWtDO0lBRTlEOztPQUVHO0lBQ0gsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQzVELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTztZQUNMLEdBQUcsOEJBQXNCO1lBQ3pCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lB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
|
package/dist/app.process.js
CHANGED
|
@@ -18,22 +18,15 @@ async function $process(sender, event) {
|
|
|
18
18
|
}
|
|
19
19
|
await this.refreshTokens();
|
|
20
20
|
let userToken;
|
|
21
|
-
let appToken = this.tenantTokens.get(token.tenantId || 'common') || this._tokens.graph?.toString();
|
|
22
21
|
try {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
...this.credentials,
|
|
32
|
-
tenantId: event.token.tenantId,
|
|
33
|
-
});
|
|
34
|
-
appToken = access_token;
|
|
35
|
-
this.tenantTokens.set(token.tenantId || 'common', access_token);
|
|
36
|
-
}
|
|
22
|
+
userToken = await this.getUserToken(activity.channelId, activity.from.id);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
// noop
|
|
26
|
+
}
|
|
27
|
+
let appToken;
|
|
28
|
+
try {
|
|
29
|
+
appToken = await this.getOrRefreshTenantToken(token.tenantId || 'common');
|
|
37
30
|
}
|
|
38
31
|
catch (err) {
|
|
39
32
|
// noop
|
|
@@ -142,4 +135,4 @@ async function $process(sender, event) {
|
|
|
142
135
|
});
|
|
143
136
|
}
|
|
144
137
|
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwLnByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsNEJBaUtDO0FBakxELG9EQUE2RjtBQUs3RiwrQkFBK0M7QUFFL0MseUNBQStEO0FBSS9EOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsUUFBUSxDQUU1QixNQUFlLEVBQ2YsS0FBcUI7SUFFckIsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ1osWUFBWSxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3BGLENBQUM7SUFFRixJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFFekQsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDN0IsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBRTNCLElBQUksU0FBNkIsQ0FBQztJQUVsQyxJQUFJLENBQUM7UUFDSCxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU87SUFDVCxDQUFDO0lBR0QsSUFBSSxRQUE0QixDQUFDO0lBQ2pDLElBQUksQ0FBQztR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
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type JwtPayload } from 'jsonwebtoken';
|
|
2
|
+
import { ILogger } from '@microsoft/teams.common';
|
|
3
|
+
export interface IJwtValidationOptions {
|
|
4
|
+
/** Required: Application/Client ID for audience validation */
|
|
5
|
+
clientId: string;
|
|
6
|
+
/**
|
|
7
|
+
* This may be 'common', 'organizations', 'consumers' for multi-tenant apps,
|
|
8
|
+
* or a specific tenant ID for single-tenant apps.
|
|
9
|
+
*/
|
|
10
|
+
tenantId?: string;
|
|
11
|
+
/**
|
|
12
|
+
* JWKS URI options for fetching public keys
|
|
13
|
+
*/
|
|
14
|
+
jwksUriOptions: {
|
|
15
|
+
type: 'tenantId';
|
|
16
|
+
} | {
|
|
17
|
+
type: 'uri';
|
|
18
|
+
uri: string;
|
|
19
|
+
};
|
|
20
|
+
/** Optional: Validate required scope in token */
|
|
21
|
+
validateScope?: {
|
|
22
|
+
requiredScope: string;
|
|
23
|
+
};
|
|
24
|
+
/** Optional: Validate service URL (Bot Framework specific) */
|
|
25
|
+
validateServiceUrl?: {
|
|
26
|
+
expectedServiceUrl: string;
|
|
27
|
+
};
|
|
28
|
+
/** Optional: Custom issuer validation */
|
|
29
|
+
validateIssuer?: {
|
|
30
|
+
/** Allowed */
|
|
31
|
+
allowedIssuer: string;
|
|
32
|
+
} | {
|
|
33
|
+
/** For multi-tenant apps, restrict to specific tenant IDs */
|
|
34
|
+
allowedTenantIds?: string[];
|
|
35
|
+
};
|
|
36
|
+
/** Optional: Clock tolerance in seconds (default: 300) */
|
|
37
|
+
clockTolerance?: number;
|
|
38
|
+
}
|
|
39
|
+
export declare class JwtValidator {
|
|
40
|
+
readonly options: IJwtValidationOptions;
|
|
41
|
+
private readonly logger?;
|
|
42
|
+
private readonly jwksCache;
|
|
43
|
+
constructor(options: IJwtValidationOptions, logger?: ILogger);
|
|
44
|
+
/**
|
|
45
|
+
* Validates a JWT token using the configured options
|
|
46
|
+
*/
|
|
47
|
+
validateAccessToken(rawToken: string, overrideOptions?: Pick<IJwtValidationOptions, 'validateServiceUrl' | 'validateScope'>): Promise<JwtPayload | null>;
|
|
48
|
+
private getJwksClient;
|
|
49
|
+
private getSigningKey;
|
|
50
|
+
private validateIssuer;
|
|
51
|
+
private validateScope;
|
|
52
|
+
private validateServiceUrl;
|
|
53
|
+
private performCustomValidations;
|
|
54
|
+
}
|
|
55
|
+
export declare const createEntraTokenValidator: (tenantId: string, clientId: string, options?: {
|
|
56
|
+
allowedTenantIds?: string[];
|
|
57
|
+
requiredScope?: string;
|
|
58
|
+
logger?: ILogger;
|
|
59
|
+
}) => JwtValidator;
|
|
60
|
+
export declare const createServiceTokenValidator: (appId: string, tenantId?: string, serviceUrl?: string, logger?: ILogger) => JwtValidator;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createServiceTokenValidator = exports.createEntraTokenValidator = exports.JwtValidator = void 0;
|
|
7
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
8
|
+
const jwks_rsa_1 = __importDefault(require("jwks-rsa"));
|
|
9
|
+
const teams_common_1 = require("@microsoft/teams.common");
|
|
10
|
+
const asserts_1 = require("../../utils/asserts");
|
|
11
|
+
const DEFAULTS = {
|
|
12
|
+
clockTolerance: 300 // 5 minutes
|
|
13
|
+
};
|
|
14
|
+
class JwtValidator {
|
|
15
|
+
options;
|
|
16
|
+
logger;
|
|
17
|
+
jwksCache = new Map();
|
|
18
|
+
constructor(options, logger) {
|
|
19
|
+
this.options = options;
|
|
20
|
+
this.logger = logger?.child('jwt-validator') ?? new teams_common_1.ConsoleLogger('jwt-validator');
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Validates a JWT token using the configured options
|
|
24
|
+
*/
|
|
25
|
+
async validateAccessToken(rawToken, overrideOptions) {
|
|
26
|
+
if (!rawToken) {
|
|
27
|
+
throw new Error('No token provided');
|
|
28
|
+
}
|
|
29
|
+
return new Promise((resolve) => {
|
|
30
|
+
const verifyOptions = {
|
|
31
|
+
audience: [
|
|
32
|
+
this.options.clientId,
|
|
33
|
+
`api://${this.options.clientId}`,
|
|
34
|
+
],
|
|
35
|
+
issuer: undefined,
|
|
36
|
+
ignoreExpiration: false,
|
|
37
|
+
algorithms: ['RS256'],
|
|
38
|
+
clockTolerance: this.options.clockTolerance ?? DEFAULTS.clockTolerance
|
|
39
|
+
};
|
|
40
|
+
this.logger?.debug('Validating JWT token with options:', {
|
|
41
|
+
audience: verifyOptions.audience,
|
|
42
|
+
clockTolerance: verifyOptions.clockTolerance,
|
|
43
|
+
algorithms: verifyOptions.algorithms
|
|
44
|
+
});
|
|
45
|
+
jsonwebtoken_1.default.verify(rawToken, this.getSigningKey.bind(this), verifyOptions, (err, decoded) => {
|
|
46
|
+
if (err) {
|
|
47
|
+
this.logger?.error('JWT verification failed:', err);
|
|
48
|
+
resolve(null);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (!decoded || typeof decoded !== 'object') {
|
|
52
|
+
this.logger?.error('Decoded token is not a valid object:', decoded);
|
|
53
|
+
resolve(null);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.logger?.debug('JWT verification succeeded');
|
|
57
|
+
const payload = decoded;
|
|
58
|
+
try {
|
|
59
|
+
this.performCustomValidations(payload, overrideOptions);
|
|
60
|
+
this.logger?.debug('Custom validations passed for token');
|
|
61
|
+
resolve(payload);
|
|
62
|
+
}
|
|
63
|
+
catch (validationError) {
|
|
64
|
+
this.logger?.error('Custom validation failed:', validationError);
|
|
65
|
+
resolve(null);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
getJwksClient() {
|
|
71
|
+
switch (this.options.jwksUriOptions.type) {
|
|
72
|
+
case 'tenantId':
|
|
73
|
+
{
|
|
74
|
+
const cachedClient = this.jwksCache.get(`${this.options.tenantId}`);
|
|
75
|
+
if (cachedClient) {
|
|
76
|
+
this.logger?.debug(`Using cached JWKS client for tenant ID: ${this.options.tenantId}`);
|
|
77
|
+
return cachedClient;
|
|
78
|
+
}
|
|
79
|
+
this.jwksCache.set(`${this.options.tenantId}`, (0, jwks_rsa_1.default)({
|
|
80
|
+
jwksUri: `https://login.microsoftonline.com/${this.options.tenantId}/discovery/v2.0/keys`,
|
|
81
|
+
}));
|
|
82
|
+
return this.jwksCache.get(`${this.options.tenantId}`);
|
|
83
|
+
}
|
|
84
|
+
case 'uri':
|
|
85
|
+
{
|
|
86
|
+
const cachedClient = this.jwksCache.get(this.options.jwksUriOptions.uri);
|
|
87
|
+
if (cachedClient) {
|
|
88
|
+
this.logger?.debug(`Using cached JWKS client for URI: ${this.options.jwksUriOptions.uri}`);
|
|
89
|
+
return cachedClient;
|
|
90
|
+
}
|
|
91
|
+
this.jwksCache.set(this.options.jwksUriOptions.uri, (0, jwks_rsa_1.default)({
|
|
92
|
+
jwksUri: this.options.jwksUriOptions.uri,
|
|
93
|
+
}));
|
|
94
|
+
return this.jwksCache.get(this.options.jwksUriOptions.uri);
|
|
95
|
+
}
|
|
96
|
+
default:
|
|
97
|
+
(0, asserts_1.assertNever)(this.options.jwksUriOptions, `Unknown JWKS URI options type: ${this.options.jwksUriOptions}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
getSigningKey(header, callback) {
|
|
101
|
+
const jwksClient = this.getJwksClient();
|
|
102
|
+
jwksClient?.getSigningKey(header.kid, (err, key) => {
|
|
103
|
+
if (err) {
|
|
104
|
+
this.logger?.error('Failed to get signing key:', err);
|
|
105
|
+
callback(err, undefined);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const signingKey = key?.getPublicKey();
|
|
109
|
+
callback(null, signingKey);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
validateIssuer(iss) {
|
|
113
|
+
if (!this.options.validateIssuer) {
|
|
114
|
+
return; // No issuer validation configured
|
|
115
|
+
}
|
|
116
|
+
if (!iss) {
|
|
117
|
+
throw new Error('Token missing issuer claim');
|
|
118
|
+
}
|
|
119
|
+
if ('allowedIssuer' in this.options.validateIssuer) {
|
|
120
|
+
// Validate against a specific allowed issuer
|
|
121
|
+
if (iss !== this.options.validateIssuer.allowedIssuer) {
|
|
122
|
+
throw new Error(`Token issuer '${iss}' does not match allowed issuer '${this.options.validateIssuer.allowedIssuer}'`);
|
|
123
|
+
}
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (!this.options.tenantId) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const isMultiTenant = ['common', 'organizations', 'consumers'].includes(this.options.tenantId);
|
|
130
|
+
const allowedTenantIds = [];
|
|
131
|
+
if (isMultiTenant) {
|
|
132
|
+
if (this.options.validateIssuer.allowedTenantIds) {
|
|
133
|
+
// find which tenant ids are not 'common', 'organizations', or 'consumers'
|
|
134
|
+
for (const tenantId of this.options.validateIssuer.allowedTenantIds) {
|
|
135
|
+
if (!['common', 'organizations', 'consumers'].includes(tenantId)) {
|
|
136
|
+
allowedTenantIds.push(tenantId);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// For single-tenant apps, only allow tokens issued by this app's tenant
|
|
143
|
+
// (ignore allowedTenantIds option for single-tenant apps)
|
|
144
|
+
allowedTenantIds.push(this.options.tenantId);
|
|
145
|
+
}
|
|
146
|
+
if (allowedTenantIds.length === 0) {
|
|
147
|
+
return; // No allowed tenant IDs configured, so no validation needed
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// Validate against allowed tenant IDs
|
|
151
|
+
if (!allowedTenantIds.some((tenantId) => iss.startsWith(`https://login.microsoftonline.com/${tenantId}/`))) {
|
|
152
|
+
throw new Error(`Token issuer '${iss}' not in allowed tenant IDs: ${allowedTenantIds.join(', ')}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
validateScope(scp, overrideValidateScope) {
|
|
157
|
+
const validateScope = overrideValidateScope || this.options.validateScope;
|
|
158
|
+
if (validateScope) {
|
|
159
|
+
const scopes = scp ?? '';
|
|
160
|
+
if (!scopes.includes(validateScope.requiredScope)) {
|
|
161
|
+
throw new Error(`Token missing required scope: ${validateScope.requiredScope}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
validateServiceUrl(serviceUrl, overrideValidateServiceUrl) {
|
|
166
|
+
const validateServiceUrl = overrideValidateServiceUrl || this.options.validateServiceUrl;
|
|
167
|
+
if (validateServiceUrl) {
|
|
168
|
+
if (!serviceUrl) {
|
|
169
|
+
throw new Error('Token missing serviceurl claim');
|
|
170
|
+
}
|
|
171
|
+
const normalizedTokenUrl = serviceUrl.replace(/\/$/, '').toLowerCase();
|
|
172
|
+
const normalizedExpectedUrl = validateServiceUrl.expectedServiceUrl.replace(/\/$/, '').toLowerCase();
|
|
173
|
+
if (normalizedTokenUrl !== normalizedExpectedUrl) {
|
|
174
|
+
throw new Error(`Service URL mismatch. Token: ${normalizedTokenUrl}, Expected: ${normalizedExpectedUrl}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
performCustomValidations(payload, overrideOptions) {
|
|
179
|
+
this.validateIssuer(payload.iss);
|
|
180
|
+
this.validateScope(payload.scp, overrideOptions?.validateScope);
|
|
181
|
+
this.validateServiceUrl(payload.serviceurl, overrideOptions?.validateServiceUrl);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
exports.JwtValidator = JwtValidator;
|
|
185
|
+
// Factory functions for common scenarios
|
|
186
|
+
const createEntraTokenValidator = (tenantId, clientId, options) => {
|
|
187
|
+
return new JwtValidator({
|
|
188
|
+
clientId,
|
|
189
|
+
tenantId,
|
|
190
|
+
validateIssuer: {
|
|
191
|
+
allowedTenantIds: options?.allowedTenantIds
|
|
192
|
+
},
|
|
193
|
+
validateScope: options?.requiredScope ? { requiredScope: options.requiredScope } : undefined,
|
|
194
|
+
jwksUriOptions: {
|
|
195
|
+
type: 'tenantId'
|
|
196
|
+
},
|
|
197
|
+
}, options?.logger);
|
|
198
|
+
};
|
|
199
|
+
exports.createEntraTokenValidator = createEntraTokenValidator;
|
|
200
|
+
const createServiceTokenValidator = (appId, tenantId, serviceUrl, logger) => {
|
|
201
|
+
return new JwtValidator({
|
|
202
|
+
clientId: appId,
|
|
203
|
+
tenantId,
|
|
204
|
+
validateIssuer: { allowedIssuer: 'https://api.botframework.com' },
|
|
205
|
+
validateServiceUrl: serviceUrl ? { expectedServiceUrl: serviceUrl } : undefined,
|
|
206
|
+
jwksUriOptions: {
|
|
207
|
+
type: 'uri',
|
|
208
|
+
uri: 'https://login.botframework.com/v1/.well-known/keys'
|
|
209
|
+
},
|
|
210
|
+
}, logger);
|
|
211
|
+
};
|
|
212
|
+
exports.createServiceTokenValidator = createServiceTokenValidator;
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9taWRkbGV3YXJlL2F1dGgvand0LXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnRUFBdUY7QUFDdkYsd0RBQTJEO0FBRTNELDBEQUFpRTtBQUVqRSxpREFBa0Q7QUFFbEQsTUFBTSxRQUFRLEdBQUc7SUFDZixjQUFjLEVBQUUsR0FBRyxDQUFDLFlBQVk7Q0FDakMsQ0FBQztBQXlDRixNQUFhLFlBQVk7SUFDUCxPQUFPLENBQXdCO0lBQzlCLE1BQU0sQ0FBVztJQUNqQixTQUFTLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFaEUsWUFBWSxPQUE4QixFQUFFLE1BQWdCO1FBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLDRCQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixRQUFnQixFQUNoQixlQUFxRjtRQUVyRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixNQUFNLGFBQWEsR0FBc0I7Z0JBQ3ZDLFFBQVEsRUFBRTtvQkFDUixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7b0JBQ3JCLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7aUJBQ2pDO2dCQUNELE1BQU0sRUFBRSxTQUFTO2dCQUNqQixnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQ3JCLGNB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
|
package/dist/middleware/index.js
CHANGED
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.EntraTokenValidator = void 0;
|
|
18
18
|
var entra_token_validator_1 = require("./entra-token-validator");
|
|
19
19
|
Object.defineProperty(exports, "EntraTokenValidator", { enumerable: true, get: function () { return entra_token_validator_1.EntraTokenValidator; } });
|
|
20
|
+
__exportStar(require("./jwt-validation-middleware"), exports);
|
|
20
21
|
__exportStar(require("./strip-mentions-text"), exports);
|
|
21
22
|
__exportStar(require("./with-client-auth"), exports);
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQUE4RDtBQUFyRCw0SEFBQSxtQkFBbUIsT0FBQTtBQUM1Qiw4REFBNEM7QUFDNUMsd0RBQXNDO0FBQ3RDLHFEQUFtQyJ9
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import { Credentials, IToken } from '@microsoft/teams.api';
|
|
3
|
+
import { ILogger } from '@microsoft/teams.common';
|
|
4
|
+
export type JwtValidationParams = {
|
|
5
|
+
credentials?: Credentials;
|
|
6
|
+
logger: ILogger;
|
|
7
|
+
};
|
|
8
|
+
export type JwtValidatedRequest = express.Request & {
|
|
9
|
+
validatedToken?: IToken;
|
|
10
|
+
};
|
|
11
|
+
export declare function withJwtValidation(params: JwtValidationParams): (req: JwtValidatedRequest, res: express.Response, next: express.NextFunction) => Promise<void>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withJwtValidation = withJwtValidation;
|
|
4
|
+
const teams_api_1 = require("@microsoft/teams.api");
|
|
5
|
+
const teams_common_1 = require("@microsoft/teams.common");
|
|
6
|
+
const jwt_validator_1 = require("./auth/jwt-validator");
|
|
7
|
+
function withJwtValidation(params) {
|
|
8
|
+
const { credentials, logger: inputLogger } = params;
|
|
9
|
+
const logger = inputLogger?.child('jwt-validation-middleware') ?? new teams_common_1.ConsoleLogger('jwt-validation-middleware');
|
|
10
|
+
// Create service token validator if credentials are provided
|
|
11
|
+
let serviceTokenValidator;
|
|
12
|
+
if (credentials?.clientId) {
|
|
13
|
+
serviceTokenValidator = (0, jwt_validator_1.createServiceTokenValidator)(credentials.clientId, credentials.tenantId, undefined, logger);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
logger.debug('No credentials provided, skipping service token validation');
|
|
17
|
+
serviceTokenValidator = null;
|
|
18
|
+
}
|
|
19
|
+
return async (req, res, next) => {
|
|
20
|
+
const authorization = req.headers.authorization?.replace('Bearer ', '');
|
|
21
|
+
if (!authorization) {
|
|
22
|
+
res.status(401).send('unauthorized');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (!serviceTokenValidator) {
|
|
26
|
+
logger.debug('No service token validator configured, skipping validation');
|
|
27
|
+
next();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const activity = req.body;
|
|
31
|
+
// Use cached validator with per-request service URL validation
|
|
32
|
+
const validationResult = await serviceTokenValidator.validateAccessToken(authorization, activity.serviceUrl ? {
|
|
33
|
+
validateServiceUrl: { expectedServiceUrl: activity.serviceUrl }
|
|
34
|
+
} : undefined);
|
|
35
|
+
if (validationResult) {
|
|
36
|
+
logger.debug(`validated service token for activity ${activity.id}`);
|
|
37
|
+
// Store the validated token in the request for use in subsequent handlers
|
|
38
|
+
req.validatedToken = new teams_api_1.JsonWebToken(authorization);
|
|
39
|
+
next();
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
res.status(401).send('Invalid token');
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXZhbGlkYXRpb24tbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2p3dC12YWxpZGF0aW9uLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsOENBbURDO0FBakVELG9EQUFtRjtBQUNuRiwwREFBaUU7QUFFakUsd0RBQWlGO0FBV2pGLFNBQWdCLGlCQUFpQixDQUFDLE1BQTJCO0lBQzNELE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNwRCxNQUFNLE1BQU0sR0FBRyxXQUFXLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixDQUFDLElBQUksSUFBSSw0QkFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFakgsNkRBQTZEO0lBQzdELElBQUkscUJBQTBDLENBQUM7SUFDL0MsSUFBSSxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDMUIscUJBQXFCLEdBQUcsSUFBQSwyQ0FBMkIsRUFDakQsV0FBVyxDQUFDLFFBQVEsRUFDcEIsV0FBVyxDQUFDLFFBQVEsRUFDcEIsU0FBUyxFQUNULE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7UUFDM0UscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPLEtBQUssRUFDVixHQUF3QixFQUN4QixHQUFxQixFQUNyQixJQUEwQixFQUMxQixFQUFFO1FBQ0YsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7WUFDM0UsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDcEMsK0RBQStEO1FBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDNUcsa0JBQWtCLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLENBQUMsVUFBVSxFQUFFO1NBQ2hFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWYsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLDBFQUEwRTtZQUMxRSxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksd0JBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRCxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import http from 'http';
|
|
2
2
|
import express from 'express';
|
|
3
|
-
import { ActivityParams, ConversationReference, IToken } from '@microsoft/teams.api';
|
|
3
|
+
import { ActivityParams, ConversationReference, Credentials, IToken } from '@microsoft/teams.api';
|
|
4
4
|
import { ILogger } from '@microsoft/teams.common';
|
|
5
5
|
import * as $http from '@microsoft/teams.common/http';
|
|
6
6
|
import { IActivityEvent, IErrorEvent } from '../../events';
|
|
7
7
|
import { Manifest } from '../../manifest';
|
|
8
|
+
import { JwtValidatedRequest } from '../../middleware/jwt-validation-middleware';
|
|
8
9
|
import { IPluginActivityResponseEvent, IPluginErrorEvent, IPluginStartEvent, ISender, IStreamer } from '../../types';
|
|
9
10
|
/**
|
|
10
11
|
* Can send/receive activities via http
|
|
@@ -13,6 +14,7 @@ export declare class HttpPlugin implements ISender {
|
|
|
13
14
|
readonly logger: ILogger;
|
|
14
15
|
readonly client: $http.Client;
|
|
15
16
|
readonly manifest: Partial<Manifest>;
|
|
17
|
+
readonly credentials?: Credentials;
|
|
16
18
|
readonly botToken?: () => IToken;
|
|
17
19
|
readonly graphToken?: () => IToken;
|
|
18
20
|
readonly $onError: (event: IErrorEvent) => void;
|
|
@@ -30,13 +32,17 @@ export declare class HttpPlugin implements ISender {
|
|
|
30
32
|
protected _port?: number;
|
|
31
33
|
protected express: express.Application;
|
|
32
34
|
protected pending: Record<string, express.Response>;
|
|
33
|
-
|
|
35
|
+
protected skipAuth: boolean;
|
|
36
|
+
constructor(server?: http.Server, options?: {
|
|
37
|
+
skipAuth?: boolean;
|
|
38
|
+
});
|
|
34
39
|
/**
|
|
35
40
|
* serve static files
|
|
36
41
|
* @param path the url path to serve
|
|
37
42
|
* @param dist the dist file path to serve
|
|
38
43
|
*/
|
|
39
44
|
static(path: string, dist: string): this;
|
|
45
|
+
onInit(): void;
|
|
40
46
|
onStart({ port }: IPluginStartEvent): Promise<void>;
|
|
41
47
|
onStop(): void;
|
|
42
48
|
onError({ error, activity }: IPluginErrorEvent): void;
|
|
@@ -982,5 +988,5 @@ export declare class HttpPlugin implements ISender {
|
|
|
982
988
|
* @param req the incoming http request
|
|
983
989
|
* @param res the http response
|
|
984
990
|
*/
|
|
985
|
-
protected onRequest(req:
|
|
991
|
+
protected onRequest(req: JwtValidatedRequest, res: express.Response, _next: express.NextFunction): Promise<void>;
|
|
986
992
|
}
|
|
@@ -52,6 +52,7 @@ const express_1 = __importDefault(require("express"));
|
|
|
52
52
|
const teams_api_1 = require("@microsoft/teams.api");
|
|
53
53
|
const $http = __importStar(require("@microsoft/teams.common/http"));
|
|
54
54
|
const package_json_1 = __importDefault(require("../../../package.json"));
|
|
55
|
+
const jwt_validation_middleware_1 = require("../../middleware/jwt-validation-middleware");
|
|
55
56
|
const types_1 = require("../../types");
|
|
56
57
|
const stream_1 = require("./stream");
|
|
57
58
|
/**
|
|
@@ -61,6 +62,7 @@ let HttpPlugin = class HttpPlugin {
|
|
|
61
62
|
logger;
|
|
62
63
|
client;
|
|
63
64
|
manifest;
|
|
65
|
+
credentials;
|
|
64
66
|
botToken;
|
|
65
67
|
graphToken;
|
|
66
68
|
$onError;
|
|
@@ -82,7 +84,9 @@ let HttpPlugin = class HttpPlugin {
|
|
|
82
84
|
_port;
|
|
83
85
|
express;
|
|
84
86
|
pending = {};
|
|
85
|
-
|
|
87
|
+
skipAuth;
|
|
88
|
+
constructor(server, options) {
|
|
89
|
+
this.skipAuth = options?.skipAuth ?? false;
|
|
86
90
|
this.express = (0, express_1.default)();
|
|
87
91
|
this._server = server || http_1.default.createServer();
|
|
88
92
|
this._server.on('request', this.express);
|
|
@@ -95,7 +99,6 @@ let HttpPlugin = class HttpPlugin {
|
|
|
95
99
|
this.use = this.express.use.bind(this.express);
|
|
96
100
|
this.express.use((0, cors_1.default)());
|
|
97
101
|
this.express.use('/api*', express_1.default.json());
|
|
98
|
-
this.express.post('/api/messages', this.onRequest.bind(this));
|
|
99
102
|
}
|
|
100
103
|
/**
|
|
101
104
|
* serve static files
|
|
@@ -106,6 +109,18 @@ let HttpPlugin = class HttpPlugin {
|
|
|
106
109
|
this.express.use(path, express_1.default.static(dist));
|
|
107
110
|
return this;
|
|
108
111
|
}
|
|
112
|
+
onInit() {
|
|
113
|
+
const messageHandlers = [this.onRequest.bind(this)];
|
|
114
|
+
if (!this.skipAuth) {
|
|
115
|
+
// Setup /api/messages route with JWT validation middleware
|
|
116
|
+
const jwtMiddleware = (0, jwt_validation_middleware_1.withJwtValidation)({
|
|
117
|
+
credentials: this.credentials,
|
|
118
|
+
logger: this.logger
|
|
119
|
+
});
|
|
120
|
+
messageHandlers.unshift(jwtMiddleware);
|
|
121
|
+
}
|
|
122
|
+
this.express.post('/api/messages', ...messageHandlers);
|
|
123
|
+
}
|
|
109
124
|
async onStart({ port }) {
|
|
110
125
|
this._port = port;
|
|
111
126
|
this.express.get('/', (_, res) => {
|
|
@@ -176,21 +191,20 @@ let HttpPlugin = class HttpPlugin {
|
|
|
176
191
|
* @param res the http response
|
|
177
192
|
*/
|
|
178
193
|
async onRequest(req, res, _next) {
|
|
179
|
-
const authorization = req.headers.authorization?.replace('Bearer ', '');
|
|
180
|
-
if (!authorization && process.env.NODE_ENV !== 'local') {
|
|
181
|
-
res.status(401).send('unauthorized');
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
194
|
const activity = req.body;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
195
|
+
let token;
|
|
196
|
+
if (req.validatedToken) {
|
|
197
|
+
token = req.validatedToken;
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
token = {
|
|
188
201
|
appId: '',
|
|
189
202
|
from: 'azure',
|
|
190
203
|
fromId: '',
|
|
191
204
|
serviceUrl: activity.serviceUrl || '',
|
|
192
205
|
isExpired: () => false,
|
|
193
206
|
};
|
|
207
|
+
}
|
|
194
208
|
this.pending[activity.id] = res;
|
|
195
209
|
this.$onActivity({
|
|
196
210
|
sender: this,
|
|
@@ -212,6 +226,10 @@ __decorate([
|
|
|
212
226
|
(0, types_1.Dependency)(),
|
|
213
227
|
__metadata("design:type", Object)
|
|
214
228
|
], HttpPlugin.prototype, "manifest", void 0);
|
|
229
|
+
__decorate([
|
|
230
|
+
(0, types_1.Dependency)({ optional: true }),
|
|
231
|
+
__metadata("design:type", Object)
|
|
232
|
+
], HttpPlugin.prototype, "credentials", void 0);
|
|
215
233
|
__decorate([
|
|
216
234
|
(0, types_1.Dependency)({ optional: true }),
|
|
217
235
|
__metadata("design:type", Function)
|
|
@@ -234,6 +252,6 @@ exports.HttpPlugin = HttpPlugin = __decorate([
|
|
|
234
252
|
version: package_json_1.default.version,
|
|
235
253
|
description: 'the default plugin for sending/receiving activities',
|
|
236
254
|
}),
|
|
237
|
-
__metadata("design:paramtypes", [http_1.default.Server])
|
|
255
|
+
__metadata("design:paramtypes", [http_1.default.Server, Object])
|
|
238
256
|
], HttpPlugin);
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbnMvaHR0cC9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBRXhCLGdEQUF3QjtBQUN4QixzREFBOEI7QUFFOUIsb0RBTzhCO0FBRzlCLG9FQUFzRDtBQUV0RCx5RUFBd0M7QUFHeEMsMEZBQW9HO0FBQ3BHLHVDQVVxQjtBQUdyQixxQ0FBc0M7QUFFdEM7O0dBRUc7QUFNSSxJQUFNLFVBQVUsR0FBaEIsTUFBTSxVQUFVO0lBRVosTUFBTSxDQUFXO0lBR2pCLE1BQU0sQ0FBZ0I7SUFHdEIsUUFBUSxDQUFxQjtJQUc3QixXQUFXLENBQWU7SUFHMUIsUUFBUSxDQUFnQjtJQUd4QixVQUFVLENBQWdCO0lBRzFCLFFBQVEsQ0FBZ0M7SUFHeEMsV0FBVyxDQUFtQztJQUU5QyxHQUFHLENBQTZCO0lBQ2hDLElBQUksQ0FBOEI7SUFDbEMsS0FBSyxDQUErQjtJQUNwQyxHQUFHLENBQTZCO0lBQ2hDLE1BQU0sQ0FBZ0M7SUFDdEMsS0FBSyxDQUErQjtJQUNwQyxHQUFHLENBQTZCO0lBRXpDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ1MsT0FBTyxDQUFjO0lBRS9CLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ1MsS0FBSyxDQUFVO0lBRWYsT0FBTyxDQUFzQjtJQUM3QixPQUFPLEdBQXFDLEVBQUUsQ0FBQztJQUMvQyxRQUFRLENBQVU7SUFFNUIsWUFBWSxNQUFvQixFQUFFLE9BQWdDO1FBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFBLGlCQUFPLEdBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxjQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBQSxjQUFJLEdBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxpQkFBTyxDQUFD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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const assertNever: (value: never, message?: string) => never;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.assertNever = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const assertNever = (value, message) => {
|
|
9
|
+
(0, assert_1.default)(false, message ?? `Unexpected value: ${value}`);
|
|
10
|
+
};
|
|
11
|
+
exports.assertNever = assertNever;
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hc3NlcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUVyQixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQVksRUFBRSxPQUFnQixFQUFTLEVBQUU7SUFDakUsSUFBQSxnQkFBTSxFQUFDLEtBQUssRUFBRSxPQUFPLElBQUkscUJBQXFCLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDO0FBRlcsUUFBQSxXQUFXLGVBRXRCIn0=
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
|
@@ -33,7 +33,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.functionContext = exports.promises = void 0;
|
|
36
|
+
exports.functionContext = exports.promises = exports.asserts = void 0;
|
|
37
|
+
exports.asserts = __importStar(require("./asserts"));
|
|
37
38
|
exports.promises = __importStar(require("./promises"));
|
|
38
39
|
exports.functionContext = __importStar(require("./function-context"));
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQXFDO0FBQ3JDLHVEQUF1QztBQUN2QyxzRUFBc0QifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/teams.apps",
|
|
3
|
-
"version": "2.0.0-preview.
|
|
3
|
+
"version": "2.0.0-preview.8",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -46,12 +46,12 @@
|
|
|
46
46
|
"reflect-metadata": "^0.2.2"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@microsoft/teams.api": "2.0.0-preview.
|
|
50
|
-
"@microsoft/teams.common": "2.0.0-preview.
|
|
51
|
-
"@microsoft/teams.graph": "2.0.0-preview.
|
|
49
|
+
"@microsoft/teams.api": "2.0.0-preview.8",
|
|
50
|
+
"@microsoft/teams.common": "2.0.0-preview.8",
|
|
51
|
+
"@microsoft/teams.graph": "2.0.0-preview.8"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@microsoft/teams.config": "2.0.0-preview.
|
|
54
|
+
"@microsoft/teams.config": "2.0.0-preview.8",
|
|
55
55
|
"@types/cors": "^2.8.17",
|
|
56
56
|
"@types/express": "^5.0.0",
|
|
57
57
|
"@types/jest": "^29.5.12",
|