Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DocumentIntelligence] Default authentication to Token Credential #46448

Merged
merged 3 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,7 @@ We continue to support API key and AAD authentication methods when creating the
Creating new clients in `Azure.AI.FormRecognizer`:
```C#
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var credential = new AzureKeyCredential(apiKey);
var credential = new DefaultAzureCredential();

var documentAnalysisClient = new DocumentAnalysisClient(new Uri(endpoint), credential);
var documentModelAdministrationClient = new DocumentModelAdministrationClient(new Uri(endpoint), credential);
Expand All @@ -75,8 +74,7 @@ var documentModelAdministrationClient = new DocumentModelAdministrationClient(ne
Creating new clients in `Azure.AI.DocumentIntelligence`:
```C# Snippet:Migration_CreateBothDocumentIntelligenceClients
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var credential = new AzureKeyCredential(apiKey);
var credential = new DefaultAzureCredential();

var documentIntelligenceClient = new DocumentIntelligenceClient(new Uri(endpoint), credential);
var documentIntelligenceAdministrationClient = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), credential);
Expand Down Expand Up @@ -352,7 +350,7 @@ Differences between the versions:
Building a document model with `Azure.AI.FormRecognizer`:
```C#
Uri blobContainerUri = new Uri("<blobContainerUri>");
var client = new DocumentModelAdministrationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var client = new DocumentModelAdministrationClient(new Uri(endpoint), new DefaultAzureCredential());

BuildDocumentModelOperation operation = await client.BuildDocumentModelAsync(WaitUntil.Completed, blobContainerUri, DocumentBuildMode.Template);
DocumentModelDetails model = operation.Value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ az cognitiveservices account keys list --name "<resource-name>" --resource-group

Once you have the value for the API key, create an `AzureKeyCredential`. With the endpoint and key credential, you can create the [`DocumentIntelligenceClient`][doc_intelligence_client_class]:

```C# Snippet:CreateDocumentIntelligenceClient
```C# Snippet:CreateDocumentIntelligenceClientApiKey
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
Expand All @@ -117,9 +117,10 @@ You will also need to [register a new AAD application][register_aad_app] and [gr

Set the values of the client ID, tenant ID, and client secret of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET.

```C# Snippet:CreateDocumentIntelligenceClientTokenCredential
```C# Snippet:CreateDocumentIntelligenceClient
string endpoint = "<endpoint>";
var client = new DocumentIntelligenceClient(new Uri(endpoint), new DefaultAzureCredential());
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceClient(new Uri(endpoint), credential);
```

## Key concepts
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "net",
"TagPrefix": "net/documentintelligence/Azure.AI.DocumentIntelligence",
"Tag": "net/documentintelligence/Azure.AI.DocumentIntelligence_76280009cf"
"Tag": "net/documentintelligence/Azure.AI.DocumentIntelligence_ac9b1a968f"
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceClient(new Uri(endpoint), credential);
```

## High resolution extraction
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceClient(new Uri(endpoint), credential);
```

## Use a prebuilt model to analyze a document from a URI
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceAdministrationClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), credential);
```

## Build a custom model
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceAdministrationClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), credential);
```

## Build a document classifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceClient(new Uri(endpoint), credential);
```

## Classify a document from a URI
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ The source client that contains the custom model to copy.

```C# Snippet:DocumentIntelligenceSampleCreateCopySourceClient
string sourceEndpoint = "<sourceEndpoint>";
string sourceApiKey = "<sourceApiKey>";
var sourceClient = new DocumentIntelligenceAdministrationClient(new Uri(sourceEndpoint), new AzureKeyCredential(sourceApiKey));
var sourceResourceCredential = new DefaultAzureCredential();
var sourceClient = new DocumentIntelligenceAdministrationClient(new Uri(sourceEndpoint), sourceResourceCredential);
```

### Target client
Expand All @@ -36,8 +36,8 @@ The target client to copy the custom model to.

```C# Snippet:DocumentIntelligenceSampleCreateCopyTargetClient
string targetEndpoint = "<targetEndpoint>";
string targetApiKey = "<targetApiKey>";
var targetClient = new DocumentIntelligenceAdministrationClient(new Uri(targetEndpoint), new AzureKeyCredential(targetApiKey));
var targetResourceCredential = new DefaultAzureCredential();
var targetClient = new DocumentIntelligenceAdministrationClient(new Uri(targetEndpoint), targetResourceCredential);
```

### Authorize the copy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceClient(new Uri(endpoint), credential);
```

## Extract the layout of a document from a URI
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceClient(new Uri(endpoint), credential);
```

## Extract the layout of a document as Markdown
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceAdministrationClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), credential);
```

## Get and List Document Model Operations
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceAdministrationClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), credential);
```

## Model administration operations
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ You can set `endpoint` and `apiKey` based on an environment variable, a configur

```C# Snippet:CreateDocumentIntelligenceAdministrationClient
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var credential = new DefaultAzureCredential();
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), credential);
```

## Compose a model
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@ public DocumentIntelligenceAdministrationClientLiveTests(bool isAsync)
}

[RecordedTest]
[Ignore("https://github.com/Azure/azure-sdk-for-net/issues/40054")]
public async Task DocumentIntelligenceAdministrationClientCanAuthenticateWithTokenCredential()
public async Task DocumentIntelligenceAdministrationClientCanAuthenticateWithApiKey()
{
var client = CreateDocumentIntelligenceAdministrationClient(useTokenCredential: true);
var client = CreateDocumentIntelligenceAdministrationClient(useApiKey: true);

Response<ResourceDetails> response = await client.GetResourceInfoAsync();
Response rawResponse = response.GetRawResponse();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@ public DocumentIntelligenceClientLiveTests(bool isAsync)
}

[RecordedTest]
[Ignore("https://github.com/Azure/azure-sdk-for-net/issues/40054")]
public async Task DocumentIntelligenceClientCanAuthenticateWithTokenCredential()
public async Task DocumentIntelligenceClientCanAuthenticateWithApiKey()
{
var client = CreateDocumentIntelligenceClient(useTokenCredential: true);
var client = CreateDocumentIntelligenceClient(useApiKey: true);

var content = new AnalyzeDocumentContent()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,41 +21,41 @@ public DocumentIntelligenceLiveTestBase(bool isAsync, RecordedTestMode? mode = n

protected string ServiceVersionString { get; } = "2024-07-31-preview";

protected DocumentIntelligenceClient CreateDocumentIntelligenceClient(bool useTokenCredential = false)
protected DocumentIntelligenceClient CreateDocumentIntelligenceClient(bool useApiKey = false)
{
var endpoint = new Uri(TestEnvironment.Endpoint);
var options = InstrumentClientOptions(new DocumentIntelligenceClientOptions());

DocumentIntelligenceClient nonInstrumentedClient;

if (useTokenCredential)
if (useApiKey)
{
nonInstrumentedClient = new DocumentIntelligenceClient(endpoint, TestEnvironment.Credential, options);
var credential = new AzureKeyCredential(TestEnvironment.ApiKey);
nonInstrumentedClient = new DocumentIntelligenceClient(endpoint, credential, options);
}
else
{
var credential = new AzureKeyCredential(TestEnvironment.ApiKey);
nonInstrumentedClient = new DocumentIntelligenceClient(endpoint, credential, options);
nonInstrumentedClient = new DocumentIntelligenceClient(endpoint, TestEnvironment.Credential, options);
}

return InstrumentClient(nonInstrumentedClient);
}

protected DocumentIntelligenceAdministrationClient CreateDocumentIntelligenceAdministrationClient(bool useTokenCredential = false)
protected DocumentIntelligenceAdministrationClient CreateDocumentIntelligenceAdministrationClient(bool useApiKey = false)
{
var endpoint = new Uri(TestEnvironment.Endpoint);
var options = InstrumentClientOptions(new DocumentIntelligenceClientOptions());

DocumentIntelligenceAdministrationClient nonInstrumentedClient;

if (useTokenCredential)
if (useApiKey)
{
nonInstrumentedClient = new DocumentIntelligenceAdministrationClient(endpoint, TestEnvironment.Credential, options);
var credential = new AzureKeyCredential(TestEnvironment.ApiKey);
nonInstrumentedClient = new DocumentIntelligenceAdministrationClient(endpoint, credential, options);
}
else
{
var credential = new AzureKeyCredential(TestEnvironment.ApiKey);
nonInstrumentedClient = new DocumentIntelligenceAdministrationClient(endpoint, credential, options);
nonInstrumentedClient = new DocumentIntelligenceAdministrationClient(endpoint, TestEnvironment.Credential, options);
}

return InstrumentClient(nonInstrumentedClient);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Reflection;
using System.Threading.Tasks;
using Azure.Core.TestFramework;
using Azure.Identity;

namespace Azure.AI.DocumentIntelligence.Tests
{
Expand Down Expand Up @@ -56,12 +57,12 @@ public static BinaryData CreateBinaryData(string filename)
protected override async ValueTask<bool> IsEnvironmentReadyAsync()
{
var endpoint = new Uri(Endpoint);
var keyCredential = new AzureKeyCredential(ApiKey);
var keyCredentialClient = new DocumentIntelligenceAdministrationClient(endpoint, keyCredential);
var credential = Credential;
var client = new DocumentIntelligenceAdministrationClient(endpoint, credential);

try
{
await keyCredentialClient.GetResourceInfoAsync();
await client.GetResourceInfoAsync();
}
catch (RequestFailedException e) when (e.Status == 401)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Azure.AI.DocumentIntelligence.Samples
[AsyncOnly] // Ensure that each sample will only run once.
public partial class DocumentIntelligenceSamples : RecordedTestBase<DocumentIntelligenceTestEnvironment>
{
public DocumentIntelligenceSamples(bool isAsync) : base(isAsync, RecordedTestMode.Live)
public DocumentIntelligenceSamples(bool isAsync) : base(isAsync)
{
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ public partial class DocumentIntelligenceSamples
public async Task AnalyzeWithPrebuiltModelWithBase64Async()
{
string endpoint = TestEnvironment.Endpoint;
string apiKey = TestEnvironment.ApiKey;
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var client = new DocumentIntelligenceClient(new Uri(endpoint), TestEnvironment.Credential);

#region Snippet:DocumentIntelligenceAnalyzeWithPrebuiltModelWithBase64Async
#if SNIPPET
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,27 @@ public void CreateDocumentIntelligenceClient()
#region Snippet:CreateDocumentIntelligenceClient
#if SNIPPET
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var credential = new DefaultAzureCredential();
#else
string endpoint = TestEnvironment.Endpoint;
string apiKey = TestEnvironment.ApiKey;
var credential = TestEnvironment.Credential;
#endif
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var client = new DocumentIntelligenceClient(new Uri(endpoint), credential);
#endregion
}

[RecordedTest]
public void CreateDocumentIntelligenceClientTokenCredential()
public void CreateDocumentIntelligenceClientApiKey()
{
#region Snippet:CreateDocumentIntelligenceClientTokenCredential
#region Snippet:CreateDocumentIntelligenceClientApiKey
#if SNIPPET
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
#else
string endpoint = TestEnvironment.Endpoint;
string apiKey = TestEnvironment.ApiKey;
#endif
var client = new DocumentIntelligenceClient(new Uri(endpoint), new DefaultAzureCredential());
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
#endregion
}

Expand All @@ -46,12 +48,12 @@ public void CreateDocumentIntelligenceAdministrationClient()
#region Snippet:CreateDocumentIntelligenceAdministrationClient
#if SNIPPET
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var credential = new DefaultAzureCredential();
#else
string endpoint = TestEnvironment.Endpoint;
string apiKey = TestEnvironment.ApiKey;
var credential = TestEnvironment.Credential;
#endif
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var client = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), credential);
#endregion
}

Expand All @@ -61,12 +63,11 @@ public void CreateBothDocumentIntelligenceClients()
#region Snippet:Migration_CreateBothDocumentIntelligenceClients
#if SNIPPET
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var credential = new DefaultAzureCredential();
#else
string endpoint = TestEnvironment.Endpoint;
string apiKey = TestEnvironment.ApiKey;
var credential = TestEnvironment.Credential;
#endif
var credential = new AzureKeyCredential(apiKey);

var documentIntelligenceClient = new DocumentIntelligenceClient(new Uri(endpoint), credential);
var documentIntelligenceAdministrationClient = new DocumentIntelligenceAdministrationClient(new Uri(endpoint), credential);
Expand All @@ -77,8 +78,7 @@ public void CreateBothDocumentIntelligenceClients()
public async Task BadRequestSnippet()
{
string endpoint = TestEnvironment.Endpoint;
string apiKey = TestEnvironment.ApiKey;
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var client = new DocumentIntelligenceClient(new Uri(endpoint), TestEnvironment.Credential);

#region Snippet:DocumentIntelligenceBadRequest
var content = new AnalyzeDocumentContent()
Expand All @@ -101,8 +101,7 @@ public async Task BadRequestSnippet()
public async Task GetWordsSnippet()
{
string endpoint = TestEnvironment.Endpoint;
string apiKey = TestEnvironment.ApiKey;
var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
var client = new DocumentIntelligenceClient(new Uri(endpoint), TestEnvironment.Credential);

#region Snippet:Migration_DocumentIntelligenceGetWordsUsage
#if SNIPPET
Expand Down
Loading