Compare commits
2 Commits
4dd3056b2f
...
6fc99f62c3
| Author | SHA1 | Date | |
|---|---|---|---|
| 6fc99f62c3 | |||
| d6adb5a3ba |
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@slawek/sk-az-tools",
|
||||
"version": "0.8.0",
|
||||
"version": "0.8.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@slawek/sk-az-tools",
|
||||
"version": "0.8.0",
|
||||
"version": "0.8.1",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@azure/identity": "^4.13.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@slawek/sk-az-tools",
|
||||
"version": "0.8.0",
|
||||
"version": "0.8.1",
|
||||
"type": "module",
|
||||
"files": [
|
||||
"dist",
|
||||
|
||||
@@ -13,18 +13,18 @@ export type DevOpsClients = {
|
||||
};
|
||||
|
||||
export async function getDevOpsClients(orgUrl: string, tenantId?: string, clientId?: string): Promise<DevOpsClients> {
|
||||
const credential = await getTokenCredential(tenantId, clientId);
|
||||
|
||||
const accessToken = await credential.getToken(RESOURCE_SCOPE_BY_NAME.devops);
|
||||
return getTokenCredential(tenantId, clientId)
|
||||
.then((credential) => credential.getToken(RESOURCE_SCOPE_BY_NAME.devops))
|
||||
.then(async (accessToken) => {
|
||||
if (!accessToken?.token) {
|
||||
throw new Error("Failed to obtain Azure DevOps API token");
|
||||
}
|
||||
|
||||
const authHandler = azdev.getBearerHandler(accessToken.token);
|
||||
const connection = new azdev.WebApi(orgUrl, authHandler);
|
||||
|
||||
const coreClient = await connection.getCoreApi();
|
||||
const gitClient = await connection.getGitApi();
|
||||
|
||||
const connection = new azdev.WebApi(orgUrl, azdev.getBearerHandler(accessToken.token));
|
||||
const [coreClient, gitClient] = await Promise.all([
|
||||
connection.getCoreApi(),
|
||||
connection.getGitApi(),
|
||||
]);
|
||||
return { coreClient, gitClient };
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { Client } from "@microsoft/microsoft-graph-client";
|
||||
import { getAccessToken } from "../azure/index.ts";
|
||||
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
|
||||
|
||||
// export async function getGraphClientUsingMsal(
|
||||
// tenantId: string,
|
||||
// clientId: string,
|
||||
// ): Promise<Client> {
|
||||
// const graphApiToken = await getAccessToken(tenantId, clientId, ["graph"]);
|
||||
|
||||
// return Client.init({
|
||||
// authProvider: (done) => {
|
||||
// done(null, graphApiToken);
|
||||
// },
|
||||
// });
|
||||
// }
|
||||
|
||||
type GraphAuthProvider = (
|
||||
done: (error: Error | null, accessToken: string | null) => void
|
||||
) => void;
|
||||
|
||||
export function getMsalAuthProvider(
|
||||
tenantId: string,
|
||||
clientId: string,
|
||||
): GraphAuthProvider {
|
||||
return (done) => {
|
||||
void getAccessToken(tenantId, clientId, ["graph"])
|
||||
.then((accessToken) => done(null, accessToken))
|
||||
.catch((err) => done(err as Error, null));
|
||||
};
|
||||
}
|
||||
|
||||
export function getAzureIdentityAuthProvider(tenantId?: string, clientId?: string) : GraphAuthProvider {
|
||||
const credentialOptions =
|
||||
tenantId && clientId
|
||||
? { tenantId, managedIdentityClientId: clientId }
|
||||
: undefined;
|
||||
|
||||
const credential = credentialOptions
|
||||
? new DefaultAzureCredential(credentialOptions)
|
||||
: new DefaultAzureCredential();
|
||||
|
||||
const getBearerToken = getBearerTokenProvider(
|
||||
credential,
|
||||
"https://graph.microsoft.com/.default",
|
||||
);
|
||||
|
||||
return (done: (error: Error | null, accessToken: string | null) => void) => {
|
||||
void getBearerToken()
|
||||
.then((token) => done(null, token))
|
||||
.catch((err) => done(err as Error, null));
|
||||
};
|
||||
}
|
||||
@@ -1,27 +1,18 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
export * from "./auth.ts";
|
||||
export * from "./app.ts";
|
||||
export * from "./sp.ts";
|
||||
|
||||
import { loadAuthConfig, loadConfig } from "../index.ts";
|
||||
import { Client, AuthProvider } from "@microsoft/microsoft-graph-client";
|
||||
|
||||
import { getMsalAuthProvider, getAzureIdentityAuthProvider } from "./auth.ts";
|
||||
import { Client } from "@microsoft/microsoft-graph-client";
|
||||
import { RESOURCE_SCOPE_BY_NAME, getTokenCredential } from "../azure/index.ts";
|
||||
|
||||
export async function getGraphClient(): Promise<Client> {
|
||||
const config = await loadConfig();
|
||||
|
||||
let authProvider: AuthProvider;
|
||||
|
||||
if (config.authMode === "azure-identity") {
|
||||
authProvider = getAzureIdentityAuthProvider();
|
||||
} else {
|
||||
const authConfig = await loadAuthConfig("public-config");
|
||||
authProvider = getMsalAuthProvider(authConfig.tenantId, authConfig.clientId);
|
||||
}
|
||||
|
||||
return Client.init({
|
||||
authProvider: authProvider,
|
||||
authProvider: (done) => {
|
||||
void getTokenCredential()
|
||||
.then((credential) => credential.getToken(RESOURCE_SCOPE_BY_NAME.graph))
|
||||
.then((accessToken) => done(null, accessToken?.token ?? null))
|
||||
.catch((err) => done(err as Error, null));
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user