|
15 | 15 | JsonWebToken, |
16 | 16 | TokenProtocol, |
17 | 17 | ) |
18 | | -from microsoft.teams.api.auth.credentials import ManagedIdentityCredentials, TokenCredentials |
| 18 | +from microsoft.teams.api.auth.credentials import ( |
| 19 | + CertificateCredentials, |
| 20 | + ManagedIdentityCredentials, |
| 21 | + TokenCredentials, |
| 22 | +) |
19 | 23 | from microsoft.teams.common import ConsoleLogger |
20 | 24 | from msal import ( # pyright: ignore[reportMissingTypeStubs] |
21 | 25 | ConfidentialClientApplication, |
@@ -69,7 +73,7 @@ async def _get_token( |
69 | 73 | if caller_name: |
70 | 74 | self._logger.debug(f"No credentials provided for {caller_name}") |
71 | 75 | return None |
72 | | - if isinstance(credentials, (ClientCredentials, ManagedIdentityCredentials)): |
| 76 | + if isinstance(credentials, (ClientCredentials, CertificateCredentials, ManagedIdentityCredentials)): |
73 | 77 | tenant_id_param = tenant_id or credentials.tenant_id or "botframework.com" |
74 | 78 | msal_client = self._get_msal_client(tenant_id_param) |
75 | 79 |
|
@@ -123,6 +127,15 @@ def _get_msal_client(self, tenant_id: str) -> ConfidentialClientApplication | Ma |
123 | 127 | client_credential=credentials.client_secret, |
124 | 128 | authority=f"https://login.microsoftonline.com/{tenant_id}", |
125 | 129 | ) |
| 130 | + elif isinstance(credentials, CertificateCredentials): |
| 131 | + client = ConfidentialClientApplication( |
| 132 | + credentials.client_id, |
| 133 | + client_credential={ |
| 134 | + "private_key": credentials.private_key, |
| 135 | + "thumbprint": credentials.thumbprint, |
| 136 | + }, |
| 137 | + authority=f"https://login.microsoftonline.com/{tenant_id}", |
| 138 | + ) |
126 | 139 | elif isinstance(credentials, ManagedIdentityCredentials): |
127 | 140 | # Create the appropriate managed identity based on type |
128 | 141 | if credentials.managed_identity_type == "system": |
|
0 commit comments