Skip to content

Commit 13e6508

Browse files
authored
[ContainerRegistry] move to use bearerTokenChallengeAuthenticationPolicy from Core (Azure#14805)
- move to depend on core CAE support - remove private copy. Fixes Azure#14760
1 parent 0aaaae8 commit 13e6508

File tree

8 files changed

+76
-534
lines changed

8 files changed

+76
-534
lines changed

common/config/rush/common-versions.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@
6464
// @azure/test-utils-perfstress should depend on lowest version of @azure/core-http for maximum compatibility, allowing test
6565
// projects to choose a higher version if desired.
6666
"@azure/core-http": ["^1.0.0"],
67+
// @azure/container-registry is using the beta.1 version for CAE support
68+
"@azure/core-rest-pipeline": ["1.1.0-beta.1"],
6769
// @azure/event-processor-host is on a much lower major version
6870
"@azure/ms-rest-nodeauth": ["^0.9.2"],
6971
// Idenity is moving from v1 to v2. Moving all packages to v2 is going to take a bit of time, in the mean time we could use v2 on the perf-identity tests.

sdk/containerregistry/container-registry/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,15 @@
7676
"dependencies": {
7777
"@azure/core-auth": "^1.3.0",
7878
"@azure/core-client": "^1.0.0",
79-
"@azure/core-rest-pipeline": "^1.0.0",
79+
"@azure/core-rest-pipeline": "1.1.0-beta.1",
8080
"@azure/core-paging": "^1.1.1",
8181
"@azure/core-tracing": "1.0.0-preview.11",
82+
"@azure/core-util": "^1.0.0-beta.1",
8283
"@azure/logger": "^1.0.0",
8384
"tslib": "^2.0.0"
8485
},
8586
"devDependencies": {
8687
"@azure/dev-tool": "^1.0.0",
87-
"@azure/core-util": "^1.0.0-beta.1",
8888
"@azure/eslint-plugin-azure-sdk": "^3.0.0",
8989
"@azure/identity": "^1.1.0",
9090
"@azure/ms-rest-nodeauth": "^3.0.8",

sdk/containerregistry/container-registry/src/bearerTokenChallengeAuthenticationPolicy.ts

Lines changed: 0 additions & 288 deletions
This file was deleted.

sdk/containerregistry/container-registry/src/containerRegistryChallengeHandler.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
// Licensed under the MIT license.
33

44
import { createSerializer, OperationOptions, OperationSpec } from "@azure/core-client";
5-
import { PipelineRequest } from "@azure/core-rest-pipeline";
65
import { GetTokenOptions } from "@azure/core-auth";
76
import {
8-
ChallengeCallbackOptions,
9-
ChallengeCallbacks,
10-
parseWWWAuthenticate
11-
} from "./bearerTokenChallengeAuthenticationPolicy";
7+
PipelineRequest,
8+
AuthorizeRequestOnChallengeOptions,
9+
ChallengeCallbacks
10+
} from "@azure/core-rest-pipeline";
11+
import { parseWWWAuthenticate } from "./wwwAuthenticateParser";
1212
import { AcrAccessToken, AcrRefreshToken, GeneratedClient } from "./generated";
1313
import * as Mappers from "./generated/models/mappers";
1414
import * as Parameters from "./generated/models/parameters";
@@ -40,12 +40,12 @@ export class ChallengeHandler implements ChallengeCallbacks {
4040
/**
4141
* Updates the authentication context based on the challenge.
4242
*/
43-
async authenticateRequestOnChallenge(
44-
challenge: string,
45-
options: ChallengeCallbackOptions
46-
): Promise<boolean> {
43+
async authorizeRequestOnChallenge(options: AuthorizeRequestOnChallengeOptions): Promise<boolean> {
4744
// Once we're here, we've completed Step 1.
48-
45+
const challenge = options.response?.headers.get("WWW-Authenticate");
46+
if (!challenge) {
47+
throw new Error("Failed to retrieve challenge from response headers");
48+
}
4949
// Step 2: Parse challenge string to retrieve serviceName and scope, where scope is the ACR Scope
5050
const { service, scope } = parseWWWAuthenticate(challenge);
5151

@@ -79,7 +79,7 @@ export class ChallengeHandler implements ChallengeCallbacks {
7979
);
8080

8181
// Step 5 - Authorize Request. At this point we're done with AAD and using an ACR access token.
82-
options.setAuthorizationHeader(acrAccessToken);
82+
options.request.headers.set("Authorization", `Bearer ${acrAccessToken}`);
8383

8484
return true;
8585
}

sdk/containerregistry/container-registry/src/containerRegistryClient.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
/// <reference lib="esnext.asynciterable" />
55

66
import { TokenCredential } from "@azure/core-auth";
7-
import { InternalPipelineOptions } from "@azure/core-rest-pipeline";
7+
import {
8+
InternalPipelineOptions,
9+
bearerTokenChallengeAuthenticationPolicy
10+
} from "@azure/core-rest-pipeline";
811
import { OperationOptions } from "@azure/core-client";
912

1013
import { SpanStatusCode } from "@azure/core-tracing";
@@ -17,7 +20,6 @@ import { GeneratedClient } from "./generated";
1720
import { createSpan } from "./tracing";
1821
import { ContainerRegistryClientOptions, DeleteRepositoryResult } from "./model";
1922
import { extractNextLink } from "./utils";
20-
import { bearerTokenChallengeAuthenticationPolicy } from "./bearerTokenChallengeAuthenticationPolicy";
2123
import { ChallengeHandler } from "./containerRegistryChallengeHandler";
2224
import { ContainerRepositoryClient, DeleteRepositoryOptions } from "./containerRepositoryClient";
2325

@@ -91,7 +93,7 @@ export class ContainerRegistryClient {
9193
this.client.pipeline.addPolicy(
9294
bearerTokenChallengeAuthenticationPolicy({
9395
credential,
94-
scopes: `https://management.core.windows.net/.default`,
96+
scopes: [`https://management.core.windows.net/.default`],
9597
challengeCallbacks: new ChallengeHandler(this.authClient)
9698
})
9799
);

0 commit comments

Comments
 (0)