Skip to content
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
253 commits
Select commit Hold shift + click to select a range
ee7faad
Merge remote-tracking branch 'upstream/main'
Nov 30, 2022
38a4d97
Merge remote-tracking branch 'upstream/main'
Dec 15, 2022
37cc2ca
Merge remote-tracking branch 'upstream/main'
Jun 12, 2023
3a86a55
Merge remote-tracking branch 'upstream/main'
Jun 14, 2023
d629199
Merge remote-tracking branch 'upstream/main'
Jun 15, 2023
ecb5346
Merge remote-tracking branch 'upstream/main'
Jun 15, 2023
f725f38
Merge remote-tracking branch 'upstream/main'
Jun 20, 2023
60eab70
Merge remote-tracking branch 'upstream/main'
Aug 12, 2024
5f11aab
Merge remote-tracking branch 'upstream/main'
Sep 4, 2024
8fa0742
Merge remote-tracking branch 'upstream/main'
Sep 10, 2024
e8c72f2
Add Entra token credentials
Sep 12, 2024
657b1c7
fixed api comments & regenerated api
AikoBB Sep 25, 2024
57db1d3
added implementation
AikoBB Oct 1, 2024
941b315
Merge branch 'main' into feature/aigerimb/ops_dual_personas
AikoBB Oct 1, 2024
2a3d6b3
fixed exchange implementation
AikoBB Oct 4, 2024
df1b9c2
fixed docs
AikoBB Oct 4, 2024
176c024
fixed docs
AikoBB Oct 4, 2024
67dfd71
added token cache and covered with tests
AikoBB Oct 4, 2024
dd98d15
added read-me
AikoBB Oct 4, 2024
8e1b595
[Storage] [DataMovement] [API-Change] Changed ShareFilesStorageResour…
nickliu-msft Oct 7, 2024
65846ee
Update Nginx changelog to support API version 2024-06-01-preview (#46…
SpencerOfwiti Oct 7, 2024
7f20f77
[Service Bus] October 2024 Release Prep (#46438)
jsquire Oct 7, 2024
7275c78
Storage STG 96 (#45604)
seanmcc-msft Oct 7, 2024
a70001f
Fix missing HybridSearch in copy method of SearchOptions (#46425)
nielsheeren Oct 7, 2024
f97a346
changed scopes to opt.param
AikoBB Oct 8, 2024
e6fd97a
Update AutoRest C# version to 3.0.0-beta.20241007.1 (#46457)
azure-sdk Oct 8, 2024
2e0cdce
fixed generated api
AikoBB Oct 8, 2024
0598a8e
Onboard Azure.Developer.MicrosoftPlaywrightTesting sdk (#45044)
Sid200026 Oct 8, 2024
984ecd1
STG 96 beta changelogs (#46451)
seanmcc-msft Oct 8, 2024
e1469a2
Azure.Monitor.Query: invalid date string format in MetricsClient (#45…
wps0 Oct 8, 2024
bdef6a6
Persist oidc env vars in deploy template (#46477)
azure-sdk Oct 8, 2024
f892913
Increment version for storage releases (#46479)
azure-sdk Oct 8, 2024
ee9547d
Increment package version after release of Azure.Messaging.ServiceBus…
azure-sdk Oct 8, 2024
7c8f16d
[Event Hubs] Convert tests to use identity auth (#46330)
jsquire Oct 8, 2024
31c0f37
[EngSys] Update central Service Bus version (#46483)
jsquire Oct 8, 2024
6b8988c
Use equality function check for persist oidc token step (#46485)
azure-sdk Oct 8, 2024
3f46696
Sync eng/common directory with azure-sdk-tools for PR 9106 (#46482)
azure-sdk Oct 8, 2024
6220065
addressed comments
AikoBB Oct 9, 2024
4fcbc80
addressed the latest comments
AikoBB Oct 9, 2024
d891541
Update version of System.Text.Json (#46508)
m-redding Oct 9, 2024
a2665e9
Update Maps codeowners (#46494)
dubiety Oct 9, 2024
cc82fce
[Storage][DataMovement] Fix perf test cleanup + other minor fixes (#4…
jalauzon-msft Oct 9, 2024
dc0f1c6
TransferManager tests (#46449)
jaschrep-msft Oct 9, 2024
a59a648
Prep for release (#46512)
m-redding Oct 9, 2024
b3ee3eb
Remove heaths as codeowner and add myself (#46488)
JonathanCrd Oct 9, 2024
37d33af
Only treat critical vulnerabilities as errors (#46515)
weshaggard Oct 9, 2024
15bd590
[Storage] [DataMovement] Moved all blob related tests out of DataMove…
nickliu-msft Oct 10, 2024
262f229
Enable-WriteCore-feature-for-networkcloud (#46469)
welovej Oct 10, 2024
4e1a9aa
Update AutoRest C# version to 3.0.0-beta.20241009.1 (#46507)
azure-sdk Oct 10, 2024
6b1dccb
2024-05 Fleet .NET sdk generation (#46353)
frantran Oct 10, 2024
1b4c390
Support handling function return value from worker process (#46158)
Y-Sindo Oct 10, 2024
4a2b1bd
fix(digitaltwins): bump System.Text.Json to 6.0.10 (#46523)
archerzz Oct 10, 2024
4cdb45f
add release date to Fleet .NET SDK latest version (#46524)
frantran Oct 10, 2024
bacd676
Update AutoRest C# version to 3.0.0-beta.20241009.4 (#46526)
azure-sdk Oct 10, 2024
a08bddf
Increment version for core releases (#46517)
azure-sdk Oct 10, 2024
7178070
added pre-warm logic
AikoBB Oct 10, 2024
abd5a14
Update Packages.Data.props (#46534)
m-redding Oct 10, 2024
991f2e6
[Storage] Prepare for Storage Base Packages Preview Patch Release and…
amnguye Oct 10, 2024
bb158f4
[Key Vault] Add CAE support & update System.ClientModel dependency ve…
JonathanCrd Oct 11, 2024
7f91404
Update AutoRest C# version to 3.0.0-beta.20241010.1 (#46561)
azure-sdk Oct 11, 2024
81ad181
Increment version for signalr releases (#46562)
azure-sdk Oct 11, 2024
38b8bd1
Enable WriteCore feature for storagecache (#46502)
melina5656 Oct 11, 2024
dfa313b
Enable WriteCore feature for healthcareapis (#46491)
melina5656 Oct 11, 2024
289b076
Enable-WriteCore-feature-for-servicelinker (#46520)
welovej Oct 11, 2024
ae887ea
Enable WriteCore feature for trafficmanager (#46497)
melina5656 Oct 11, 2024
2769d86
Enable WriteCore feature for storage (#46501)
melina5656 Oct 11, 2024
e84f5af
Enable-WriteCore-feature-for-servicefabricmanagedclusters (#46518)
welovej Oct 11, 2024
ccc4b02
Enable-WriteCore-feature-for-servicebus (#46505)
welovej Oct 11, 2024
94384c7
Enable-WriteCore-feature-for-securityinsights (#46504)
welovej Oct 11, 2024
e32939a
Enable-WriteCore-feature-for-purview (#46498)
welovej Oct 11, 2024
e08ef6a
Enable-WriteCore-feature-for-securitycenter (#46503)
welovej Oct 11, 2024
1f01865
Enable-WriteCore-feature-for-privatedns (#46496)
welovej Oct 11, 2024
6eb2ca1
Enable write core feature for peering (#46493)
welovej Oct 11, 2024
8138c50
Enable-WriteCore-feature-for-orbital (#46492)
welovej Oct 11, 2024
386e4ed
Enable-WriteCore-feature-for-sphere (#46268)
welovej Oct 11, 2024
e1b37dd
Enable-WriteCore-feature-for-recoveryservices-backup (#46243)
welovej Oct 11, 2024
420b3e4
Enable-WriteCore-feature-for-hdinsightcontainers (#46463)
welovej Oct 11, 2024
de9e665
Enable-WriteCore-feature-for-mysql (#46466)
welovej Oct 11, 2024
96c97ad
Enable-WriteCore-feature-for-eventgrid (#46461)
welovej Oct 11, 2024
acdb8a0
Enable-WriteCore-feature-for-labservices (#46464)
welovej Oct 11, 2024
2dffe0b
Enable-WriteCore-feature-for-network (#46467)
welovej Oct 11, 2024
6af3487
Enable-WriteCore-feature-for-resourcemover (#46499)
welovej Oct 11, 2024
a6d178f
Enable-WriteCore-feature-for-devtestlabs (#46455)
welovej Oct 11, 2024
893b607
Enable-WriteCore-feature-for-edgeorder (#46459)
welovej Oct 11, 2024
57844b8
Enable-WriteCore-feature-for-springappdiscovery (#46521)
welovej Oct 11, 2024
d6b5287
add entra token cashing logic
AikoBB Oct 11, 2024
3142625
Update CODEOWNERS for SignalR(#46458)
Y-Sindo Oct 11, 2024
86b7e38
Initial commit (#46535)
nickliu-msft Oct 11, 2024
c04f11e
[Event Hubs] Resilient management link creation (#46544)
jsquire Oct 11, 2024
6a35bdf
Add generation of 2023-07-01-preview and new tests for dns resolver d…
jamesvoongms Oct 11, 2024
5ae1c69
[CODEOWNERS] Adjust baseline errors (#46567)
jsquire Oct 11, 2024
7ba92a4
[AzureMonitorDistro] Fix livemetrics reporting incorrect values (#46429)
Oct 11, 2024
611f1d2
Increment version for storage releases (#46542)
azure-sdk Oct 11, 2024
c47c872
[AzureMonitorExporter] prep release 1.4.0 beta2 (#45906)
Oct 11, 2024
faccbb8
Increment version for storage releases (#46543)
azure-sdk Oct 11, 2024
0103d7a
Azure.Provisioning: Update Redis to provide IsAccessKeyAuthentication…
tg-msft Oct 11, 2024
bc34307
Sync eng/common directory with azure-sdk-tools for PR 9102 (#46546)
azure-sdk Oct 11, 2024
584f9c0
Increment package version after release of Azure.Monitor.OpenTelemetr…
azure-sdk Oct 11, 2024
177f044
[AzureMonitorDistro] prep release 1.3.0 beta2 (#46572)
Oct 11, 2024
24d493b
Enable-WriteCore-feature-for-fleet (#46462)
welovej Oct 12, 2024
e79e2b0
Enable-WriteCore-feature-for-newrelicobservability (#46490)
welovej Oct 12, 2024
afc0efd
Prepare for release (#46576)
JoshLove-msft Oct 12, 2024
d018fa4
Update CODEOWNERS (#46575)
rahuls-microsoft Oct 13, 2024
3d93132
Enable WriteCore feature for websubsub and release a new version (#46…
melina5656 Oct 14, 2024
a0d8034
Enable-WriteCore-feature-for-websites and release a new version (#46305)
welovej Oct 14, 2024
6bc7e54
Bump version of MGC (#46565)
live1206 Oct 14, 2024
6eb56b7
update ContainerServiceFleet variables for more clear naming (#46582)
frantran Oct 14, 2024
f38dc95
Enable-WriteCore-feature-for-operationalinsights (#46225)
welovej Oct 14, 2024
ed6ed2b
Enable WriteCore feature for containerservice (#46355)
melina5656 Oct 14, 2024
d851a07
Enable-WriteCore-feature-for-recoveryservices (#46242)
welovej Oct 14, 2024
fb0b80d
Update commit to fix tsp compile (#46587)
live1206 Oct 14, 2024
2d1b484
Increment package version after release of Azure.ResourceManager.WebP…
azure-sdk Oct 14, 2024
fb9fb16
Increment package version after release of Azure.Messaging.EventGrid …
azure-sdk Oct 14, 2024
1486aab
Storage json hotfix (#46591)
seanmcc-msft Oct 14, 2024
98bcb1c
Increment package version after release of Azure.ResourceManager.AppS…
azure-sdk Oct 14, 2024
dcfb2ef
fix(playwighttesting): Removed cancellationToken from SetupAsync meth…
kashish2508 Oct 14, 2024
8a252ab
Update test-resources.bicep (#46573)
nisha-bhatia Oct 14, 2024
fabfa6c
Added the ability to provision AOAI as an optional component (#46570)
KrzysztofCwalina Oct 14, 2024
eee60a1
DM Lib beta release (#46596)
seanmcc-msft Oct 14, 2024
e499bcc
[EngSys] Bump package versions (#46595)
jsquire Oct 14, 2024
bb73175
Prepare for October GA release (#46600)
christothes Oct 14, 2024
59c2c7a
Fixed DM Lib Shares dependency (#46603)
seanmcc-msft Oct 14, 2024
d5abc28
fix package dependency (#46609)
Oct 14, 2024
2cbb460
[Key Vault] Prepare release for CAE feature (#46599)
JonathanCrd Oct 14, 2024
48f989c
[DocumentIntelligence] Default authentication to Token Credential (#4…
kinelski Oct 14, 2024
f754c0b
Increment version for storage releases (#46610)
azure-sdk Oct 14, 2024
1c9d5fe
Switch to TME test subscription (#46452)
weshaggard Oct 15, 2024
eaacc34
[.ContainerServiceFleet] Remove the ignore attribute and fix recordin…
melina5656 Oct 15, 2024
f093f78
remove ignore attribute and fix the recording file when Servicelin…
welovej Oct 15, 2024
b6a1b77
Enable WriteCore feature for eventhub (#46169)
melina5656 Oct 15, 2024
3686854
Enable WriteCore feature for managedserviceidentity (#46563)
melina5656 Oct 15, 2024
7bc71a3
Enable-WriteCore-feature-for-compute And Release (#46310)
welovej Oct 15, 2024
9b5d2fd
Enable-WriteCore-feature-for-containerregistry And Release (#46527)
welovej Oct 15, 2024
75f579a
Update CHANGELOG.md (#46625)
welovej Oct 15, 2024
148a3d4
Increment package version after release of Azure.ResourceManager.Cont…
azure-sdk Oct 15, 2024
39b116b
Increment package version after release of Azure.ResourceManager.Comp…
azure-sdk Oct 15, 2024
1a72564
Increment package version after release of Azure.ResourceManager.Mana…
azure-sdk Oct 15, 2024
b99cb10
Increment package version after release of Azure.ResourceManager.Cont…
azure-sdk Oct 15, 2024
1498048
Increment package version after release of Azure.ResourceManager.Even…
azure-sdk Oct 15, 2024
1450724
Increment package version after release of Azure.Identity (#46615)
azure-sdk Oct 15, 2024
f703f24
Delete DAC flow diagram (#46638)
scottaddie Oct 15, 2024
49983fc
Increment package version after release of Azure.Monitor.OpenTelemetr…
azure-sdk Oct 15, 2024
84f54f7
Sync .github/workflows directory with azure-sdk-tools for PR 9134 (#4…
azure-sdk Oct 15, 2024
abc40d3
Increment version for keyvault releases (#46647)
azure-sdk Oct 15, 2024
5e8b299
cleaned up CM workspace APIs (#46649)
KrzysztofCwalina Oct 15, 2024
5fb1796
[HealthcareApis/ApiManagement] Remove the ignore attribute and fix re…
melina5656 Oct 16, 2024
b3a28be
[ServiceBus/EventHub] Remove the ignore attribute and fix recording f…
melina5656 Oct 16, 2024
1ba7367
update (#46634)
welovej Oct 16, 2024
0207495
Enable-WriteCore-feature-for-iothub And Release (#46178)
welovej Oct 16, 2024
174e3d8
Enable-WriteCore-feature-for-logic And Release (#46184)
welovej Oct 16, 2024
1ba67d8
release (#46621)
welovej Oct 16, 2024
59f2ec4
release (#46620)
welovej Oct 16, 2024
8b6ffb6
added acs token validity check
AikoBB Oct 16, 2024
81939fb
[ContainerApps] Remove ingore attribute and fix the recording file af…
welovej Oct 16, 2024
28bae8e
Mark AzureAuthorityHosts.AzureGermany as Obsolete. (#46371)
Eagle3386 Oct 16, 2024
c9fa717
AzurePipelinesCredential doc updates (#46668)
scottaddie Oct 16, 2024
601b82b
Use BinaryData.Empty instead of bespoke solution in SCM and Azure.Cor…
annelo-msft Oct 16, 2024
39986d6
[Storage] [DataMovement] Refactor Try-style methods (#46645)
nickliu-msft Oct 16, 2024
7b3e5d2
Increment package version after release of Azure.ResourceManager.Logi…
azure-sdk Oct 16, 2024
d62dcaf
Increment package version after release of Azure.ResourceManager.Reco…
azure-sdk Oct 16, 2024
d1d2d36
Increment package version after release of Azure.ResourceManager.IotH…
azure-sdk Oct 16, 2024
e9b4733
Increment package version after release of Azure.ResourceManager.Oper…
azure-sdk Oct 16, 2024
dd38ca7
Sync eng/common directory with azure-sdk-tools for PR 9147 (#46682)
azure-sdk Oct 16, 2024
50ec66b
Set resource group env variable early so remove always works (#46680)
azure-sdk Oct 16, 2024
f44fe20
Fix missing CloseAddressedIssues in gh event processor (#46678)
azure-sdk Oct 16, 2024
f853149
Handle missing artifacts without exception (#46676)
azure-sdk Oct 16, 2024
5664b36
DevOpsInfrastructure - .Net SDK for GA stable version (#46652)
nicholasbergesen Oct 17, 2024
eb369aa
update1 (#46659)
welovej Oct 17, 2024
11b18d0
update1 (#46660)
welovej Oct 17, 2024
65a9d1f
update1 (#46662)
welovej Oct 17, 2024
ba54b3c
Enable-WriteCore-feature-for-cosmosdb (#46137)
welovej Oct 17, 2024
d5ae4b1
Update CHANGELOG.md (#46227)
melina5656 Oct 17, 2024
ab3850b
chore(playwrighttesting): removed fallback authentication logic (#46667)
kashish2508 Oct 17, 2024
130d1c7
[ElasticSan] Add support for ElasticSan auto scale policy (#46470)
yifanz7 Oct 17, 2024
904049f
fixed comments
AikoBB Oct 17, 2024
50a2b82
fix(samples): upgrade vulnerable version of `Azure.Storage.Blobs` (#4…
archerzz Oct 17, 2024
81e59aa
K8s-runtime SDK (#45651)
HE-Xinyu Oct 17, 2024
17ef743
Update AutoRest C# version to 3.0.0-beta.20241017.1 (#46690)
azure-sdk Oct 17, 2024
8cba7d7
Implement storage events (#46648)
christothes Oct 17, 2024
4a4a28c
Annotate Azure.Messaging.EventHubs for trim/AOT compat (#46606)
sbomer Oct 17, 2024
dad28f1
Sync eng/common directory with azure-sdk-tools for PR 9177 (#46670)
azure-sdk Oct 17, 2024
d0aadf7
Fix storage tests-weekly matrix (#46651)
weshaggard Oct 17, 2024
e545aec
Update Readme.md and changelog for GA release. (#46684)
rhurey Oct 17, 2024
02da266
Fix issue where stand-alone ManagedIdentityCredential does not consid…
christothes Oct 17, 2024
eb9d036
Sync eng/common directory with azure-sdk-tools for PR 9181 (#46695)
azure-sdk Oct 18, 2024
68c2e95
Azure Compute Fleet GA version 2024-11-01 Minor update to Documentati…
rahuls-microsoft Oct 18, 2024
823144f
Release stable version 2024-07-10 of HybridCompute (#46581)
yaotongms Oct 18, 2024
4ea975a
Update Generator Version 3.0.0-beta.20241017.2 (#46699)
azure-sdk Oct 18, 2024
61583cf
Increment package version after release of Azure.ResourceManager.Cont…
azure-sdk Oct 18, 2024
10e73e6
Increment package version after release of Azure.ResourceManager.Hybr…
azure-sdk Oct 18, 2024
13608ef
Handle cleanup for leased and encrypted storage accounts. Reduce thro…
azure-sdk Oct 18, 2024
401d052
Added support for additional media message types: documents, videos, …
glorialimicrosoft Oct 18, 2024
b203feb
Merge transferjobinternal (#46540)
jaschrep-msft Oct 18, 2024
6e5e7be
[CODEOWNERS] Removing invalid owners (#46710)
jsquire Oct 18, 2024
14d9766
Azure.Provisioning: Rename after review feedback (#46715)
tg-msft Oct 18, 2024
7c7f12b
[Storage][DataMovement] Record some tests that could not be previousl…
jalauzon-msft Oct 18, 2024
c7ffa2c
Azure.Provisioning: Unify resolvers and newslot Literal expressions (…
tg-msft Oct 18, 2024
d5acd65
Increment package version after release of Azure.Communication.Messag…
azure-sdk Oct 19, 2024
3873c15
feat(playwrighttesting): separate api, test data processing and utili…
Sid200026 Oct 21, 2024
d49b532
docs(): update release date in CHANGELOG (#46730)
Sid200026 Oct 21, 2024
b2ccaba
fix(): remove dot from artifact safename (#46732)
Sid200026 Oct 21, 2024
8f98f23
Generating SDK with the latest TypeSpec commit (#46604)
hamshavathimunibyraiah Oct 21, 2024
3fadc42
Azure.Provisioning: API cleanup (#46735)
tg-msft Oct 21, 2024
ec5fafd
Let DAC chain continue for 400 responses with 'Identity not found' (#…
christothes Oct 21, 2024
19856fc
Move perf pipelines to TME subscription (#46739)
azure-sdk Oct 21, 2024
2deb63c
[CODEOWNERS] Remove invalid account (#46741)
jsquire Oct 21, 2024
8897cd4
Azure.Provisioning: Avoid excess `null`s in BicepStringBuilder (#46742)
tg-msft Oct 22, 2024
040e54d
Sync eng/common directory with azure-sdk-tools for PR 9229 (#46743)
azure-sdk Oct 22, 2024
4a51ce9
Update .NET SDK to remove property (#46272)
emmeliaAra Oct 22, 2024
fe44601
AI Face SDK update (#45402)
Han-msft Oct 22, 2024
8981012
fix(playwrighttesting): logger name and flaky tests (#46746)
Sid200026 Oct 22, 2024
d21af4c
Increment package version after release of Azure.ResourceManager.Comp…
azure-sdk Oct 22, 2024
f25b742
Update Nginx SDK version (#46758)
SpencerOfwiti Oct 22, 2024
1f536ba
Initial commit (#46759)
nickliu-msft Oct 22, 2024
9e4d98d
Update for Azure Confidential Ledger Service Attention CODEOWNERS (#4…
amruthashree18 Oct 22, 2024
fc7b3ae
Fix spelling of Regenerate in yaml (#46761)
azure-sdk Oct 22, 2024
52a4a34
Support branch name with space in create review step (#46763)
azure-sdk Oct 22, 2024
a5714d4
Update MSAL to 4.66.1 (#46764)
christothes Oct 22, 2024
6a756a6
[NetAppFiles] update to 2024-07-01 (#46640)
audunn Oct 23, 2024
6fd5181
Increment package version after release of Azure.AI.Vision.Face (#46770)
azure-sdk Oct 23, 2024
5d4321a
[CognitiveServices] Prepare to release a new version (#46701)
melina5656 Oct 23, 2024
b949f5a
[signalr] Prepare to release a new version (#46727)
melina5656 Oct 23, 2024
8236e8d
docs(playwrighttesting): dotnet namespace fix and CHANGELOG update (#…
Sid200026 Oct 23, 2024
47f3c9b
Implement Response abstraction for Azure (#46530)
live1206 Oct 23, 2024
c166df8
Fix scenario where IMDS probe succeeds, but MI is unavailable (#46787)
christothes Oct 23, 2024
f8154ee
Publish pipeline artifact with converted symbols (#46738)
hallipr Oct 23, 2024
9ad8747
Fixed a bug in AZD integration code (#46791)
KrzysztofCwalina Oct 23, 2024
e665cae
Fix symbol artifact output (#46797)
hallipr Oct 23, 2024
11bb421
run Update-Mgmt-CI.ps1 in automation (#46748)
chunyu3 Oct 24, 2024
47fa5d4
DataFactory DotNet SDK Release (#46744)
wangbwn Oct 24, 2024
af1ab08
Increment package version after release of Azure.ResourceManager.Data…
azure-sdk Oct 24, 2024
94d2be0
AVS 2023-09-01 SDK generation (#46324)
anaarias-msft Oct 24, 2024
11b61b6
Prepare release for Azure.ResourceManager.ContainerInstance 1.3.0-bet…
ArthurMa1978 Oct 24, 2024
6928b39
chore(): 1.0.0-beta.1 post release changes (#46809)
Sid200026 Oct 24, 2024
02c5753
Increment package version after release of Azure.ResourceManager.Elas…
azure-sdk Oct 24, 2024
cf787a1
feat(playwrighttesting): Add support to publish attachments (#46780)
puagarwa Oct 24, 2024
85d7532
Sync eng/common directory with azure-sdk-tools for PR 9236 (#46818)
azure-sdk Oct 24, 2024
1556e06
Prep Identity for 1.13.1 patch release (#46817)
christothes Oct 24, 2024
fb11960
Increment package version after release of Azure.ResourceManager.Cont…
azure-sdk Oct 24, 2024
6d72f21
Increment package version after release of Azure.ResourceManager.Avs …
azure-sdk Oct 24, 2024
3db918d
[Azure.AI.Inference] Beta 2 (#45757)
trangevi Oct 24, 2024
fd0b3e7
[Storage][DataMovement] Add perf tests for DMLib Track1 (#46768)
jalauzon-msft Oct 24, 2024
4dacd22
Adds SensitivityMask to DialogSensitivityUpdate (#46796)
calvinkwtang Oct 24, 2024
fe13140
Increment package version after release of Azure.AI.Vision.ImageAnaly…
azure-sdk Oct 24, 2024
fe91f47
Increment package version after release of Azure.AI.Inference (#46821)
azure-sdk Oct 24, 2024
cabfa4a
Allow default matrix selection override (#46825)
azure-sdk Oct 24, 2024
730b202
Enable-WriteCore-for-Azure.Developer.DevCenter (#46779)
welovej Oct 24, 2024
dda8e31
added setter for scopes
AikoBB Oct 25, 2024
31eda01
small test fix
AikoBB Oct 25, 2024
67b0688
Merge remote-tracking branch 'upstream/main' into feature/aigerimb/op…
AikoBB Oct 25, 2024
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
2 changes: 1 addition & 1 deletion eng/Packages.Data.props
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
<PackageReference Update="System.Security.Cryptography.Cose" Version="7.0.0" />
<PackageReference Update="System.Threading.Channels" Version="6.0.0" />
<PackageReference Update="System.Threading.Tasks.Extensions" Version="4.5.4" />
<PackageReference Update="System.Text.Json" Version="6.0.9" />
<PackageReference Update="System.Text.Json" Version="6.0.10" />
<PackageReference Update="System.Text.Encodings.Web" Version="6.0.0" />
<PackageReference Update="System.ValueTuple" Version="4.5.0" />
<PackageReference Update="Microsoft.Bcl.AsyncInterfaces" Version="6.0.0" />
Expand Down
26 changes: 26 additions & 0 deletions sdk/communication/Azure.Communication.Common/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ Depending on your scenario, you may want to initialize the `CommunicationTokenCr

- a static token (suitable for short-lived clients used to e.g. send one-off Chat messages) or
- a callback function that ensures a continuous authentication state (ideal e.g. for long Calling sessions).
- a token credential capable of obtaining an Entra user token. You can provide any implementation of [Azure.Core.TokenCredential](https://docs.microsoft.com/dotnet/api/azure.core.tokencredential?view=azure-dotnet). It is suitable for scenarios where Entra user access tokens are needed to authenticate with Communication Services.

The tokens supplied to the `CommunicationTokenCredential` either through the constructor or via the token refresher callback can be obtained using the Azure Communication Identity library.

Expand Down Expand Up @@ -101,6 +102,31 @@ using var tokenCredential = new CommunicationTokenCredential(
});
```

### Create a credential with a token credential capable of obtaining an Entra user token

For scenarios where an Entra user can be used with Communication Services, you need to initialize any implementation of [Azure.Core.TokenCredential](https://docs.microsoft.com/dotnet/api/azure.core.tokencredential?view=azure-dotnet) and provide it to the ``EntraCommunicationTokenCredentialOptions``.
Along with this, you must provide the URI of the Azure Communication Services resource and the scopes required for the Entra user token. These scopes determine the permissions granted to the token:

```C#
var options = new InteractiveBrowserCredentialOptions
{
TenantId = "<your-tenant-id>",
ClientId = "<your-client-id>",
RedirectUri = new Uri("<your-redirect-uri>"),
AuthorityHost = new Uri("https://login.microsoftonline.com/<your-tenant-id>")
};
var entraTokenCredential = new InteractiveBrowserCredential(options);

var entraTokenCredentialOptions = new EntraCommunicationTokenCredentialOptions(
resourceEndpoint: "https://<your-resource>.communication.azure.com",
entraTokenCredential: entraTokenCredential,
scopes: new[] { "https://communication.azure.com/clients/VoIP" }
);

var credential = new CommunicationTokenCredential(entraTokenCredentialOptions);

```

## Troubleshooting
The proactive refreshing failures happen in a background thread and to avoid crashing your app the exceptions will be silently handled.
All the other failures will happen during your request using other clients such as chat where you can catch the exception using `RequestFailedException`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ protected CommunicationIdentifier() { }
public sealed partial class CommunicationTokenCredential : System.IDisposable
{
public CommunicationTokenCredential(Azure.Communication.CommunicationTokenRefreshOptions options) { }
public CommunicationTokenCredential(Azure.Communication.EntraCommunicationTokenCredentialOptions options) { }
public CommunicationTokenCredential(string token) { }
public void Dispose() { }
public Azure.Core.AccessToken GetToken(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
Expand All @@ -53,6 +54,14 @@ public CommunicationUserIdentifier(string id) { }
public override bool Equals(Azure.Communication.CommunicationIdentifier other) { throw null; }
public override string ToString() { throw null; }
}
public partial class EntraCommunicationTokenCredentialOptions
{
public EntraCommunicationTokenCredentialOptions(string resourceEndpoint, Azure.Core.TokenCredential entraTokenCredential) { }
public EntraCommunicationTokenCredentialOptions(string resourceEndpoint, Azure.Core.TokenCredential entraTokenCredential, string[] scopes) { }
public string ResourceEndpoint { get { throw null; } }
public string[] Scopes { get { throw null; } }
public Azure.Core.TokenCredential TokenCredential { get { throw null; } }
}
public partial class MicrosoftTeamsAppIdentifier : Azure.Communication.CommunicationIdentifier
{
public MicrosoftTeamsAppIdentifier(string appId, Azure.Communication.CommunicationCloudEnvironment? cloud = default(Azure.Communication.CommunicationCloudEnvironment?)) { }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ public CommunicationTokenCredential(CommunicationTokenRefreshOptions options)
_tokenCredential = new AutoRefreshTokenCredential(options);
}

/// <summary>
/// Initializes a new instance of <see cref="CommunicationTokenCredential"/>.
/// </summary>
/// <param name="options">The options for how the token will be fetched</param>
public CommunicationTokenCredential(EntraCommunicationTokenCredentialOptions options)
{
Argument.AssertNotNull(options, nameof(options));
_tokenCredential = new EntraTokenCredential(options);
}

/// <summary>
/// Gets an <see cref="AccessToken"/> for the user.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using Azure.Core;

namespace Azure.Communication
{
/// <summary>
/// The Entra Communication Token Options.
/// </summary>
public class EntraCommunicationTokenCredentialOptions
{
private static string[] DefaultScopes = { "https://communication.azure.com/clients/.default" };
/// <summary>
/// The URI of the Azure Communication Services resource.
/// </summary>
public string ResourceEndpoint { get; }

/// <summary>
/// The credential capable of fetching an Entra user token. You can provide any implementation of <see cref="Azure.Core.TokenCredential"/>.
/// </summary>
public TokenCredential TokenCredential { get; }

/// <summary>
/// The scopes required for the Entra user token. These scopes determine the permissions granted to the token. For example, ["https://communication.azure.com/clients/VoIP"].
/// </summary>
public string[] Scopes { get; }

/// <summary>
/// Initializes a new instance of <see cref="EntraCommunicationTokenCredentialOptions"/>.
/// </summary>
/// <param name="resourceEndpoint">The URI of the Azure Communication Services resource.For example, https://myResource.communication.azure.com.</param>
/// <param name="entraTokenCredential">The credential capable of fetching an Entra user token.</param>
/// <param name="scopes">The scopes required for the Entra user token.</param>
public EntraCommunicationTokenCredentialOptions(
string resourceEndpoint,
TokenCredential entraTokenCredential,
string[] scopes)
{
Argument.AssertNotNullOrEmpty(resourceEndpoint, nameof(resourceEndpoint));
Argument.AssertNotNull(entraTokenCredential, nameof(entraTokenCredential));
Argument.AssertNotNullOrEmpty(scopes, nameof(scopes));

this.ResourceEndpoint = resourceEndpoint;
this.TokenCredential = entraTokenCredential;
this.Scopes = scopes;
}

/// <summary>
/// Initializes a new instance of <see cref="EntraCommunicationTokenCredentialOptions"/>.
/// </summary>
/// <param name="resourceEndpoint">The URI of the Azure Communication Services resource.For example, https://myResource.communication.azure.com.</param>
/// <param name="entraTokenCredential">The credential capable of fetching an Entra user token.</param>
public EntraCommunicationTokenCredentialOptions(
string resourceEndpoint,
TokenCredential entraTokenCredential) : this(
resourceEndpoint,
entraTokenCredential,
DefaultScopes)
{
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Azure.Core;
using Azure.Core.Pipeline;

namespace Azure.Communication
{
/// <summary>
/// Represents a credential that exchanges an Entra token for an Azure Communication Services (ACS) token, enabling access to ACS resources.
/// </summary>
internal sealed class EntraTokenCredential : ICommunicationTokenCredential
{
private HttpPipeline _pipeline;
private string _resourceEndpoint;
private readonly ThreadSafeRefreshableAccessTokenCache _accessTokenCache;

/// <summary>
/// Initializes a new instance of <see cref="EntraTokenCredential"/>.
/// </summary>
/// <param name="options">The options for how the token will be fetched</param>
/// <param name="pipelineTransport">Only for testing.</param>
public EntraTokenCredential(EntraCommunicationTokenCredentialOptions options, HttpPipelineTransport pipelineTransport = null)
{
this._resourceEndpoint = options.ResourceEndpoint;
_pipeline = CreatePipelineFromOptions(options, pipelineTransport);
_accessTokenCache = new ThreadSafeRefreshableAccessTokenCache(
ExchangeEntraToken,
ExchangeEntraTokenAsync,
false, null, null);
_accessTokenCache.GetValueAsync(default);
}

private HttpPipeline CreatePipelineFromOptions(EntraCommunicationTokenCredentialOptions options, HttpPipelineTransport pipelineTransport)
{
var authenticationPolicy = new BearerTokenAuthenticationPolicy(options.TokenCredential, options.Scopes);
var entraTokenGuardPolicy = new EntraTokenGuardPolicy();
var clientOptions = ClientOptions.Default;
if (pipelineTransport != null)
{
clientOptions.Transport = pipelineTransport;
}
return HttpPipelineBuilder.Build(clientOptions, authenticationPolicy, entraTokenGuardPolicy);
}

/// <inheritdoc />
public void Dispose()
{
_pipeline = default;
_accessTokenCache.Dispose();
}

/// <summary>
/// Gets an <see cref="AccessToken"/>.
/// </summary>
/// <param name="cancellationToken">The cancellation token for the task.</param>
/// <returns> Contains the access token.</returns>
public AccessToken GetToken(CancellationToken cancellationToken = default)
=> _accessTokenCache.GetValue(cancellationToken, () => true);

/// <summary>
/// Gets an <see cref="AccessToken"/>.
/// </summary>
/// <param name="cancellationToken">The cancellation token for the task.</param>
/// <returns>
/// A task that represents the asynchronous get token operation. The value of its <see cref="ValueTask{AccessToken}.Result"/> property contains the access token.
/// </returns>
public ValueTask<AccessToken> GetTokenAsync(CancellationToken cancellationToken = default)
=> _accessTokenCache.GetValueAsync(cancellationToken, () => true);

private AccessToken ExchangeEntraToken(CancellationToken cancellationToken)
{
return ExchangeEntraTokenAsync(false, cancellationToken).EnsureCompleted();
}

private async ValueTask<AccessToken> ExchangeEntraTokenAsync(CancellationToken cancellationToken)
{
var result = await ExchangeEntraTokenAsync(true, cancellationToken).ConfigureAwait(false);
return result;
}

private async ValueTask<AccessToken> ExchangeEntraTokenAsync(bool async, CancellationToken cancellationToken)
{
var message = CreateRequestMessage();
if (async)
{
await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false);
}
else
{
_pipeline.Send(message, cancellationToken);
}
return ParseAccessTokenFromResponse(message.Response);
}

private HttpMessage CreateRequestMessage()
{
var uri = new RequestUriBuilder();
uri.Reset(new Uri(_resourceEndpoint));
uri.AppendPath("/access/entra/:exchangeAccessToken", false);
uri.AppendQuery("api-version", "2024-04-01-preview", true);

var message = _pipeline.CreateMessage();
var request = message.Request;
request.Uri = uri;
request.Method = RequestMethod.Post;
request.Headers.Add("Accept", "application/json");
request.Headers.Add("Content-Type", "application/json");
request.Content = "{}";

return message;
}

private AccessToken ParseAccessTokenFromResponse(Response response)
{
switch (response.Status)
{
case 200:
try
{
var json = JsonDocument.Parse(response.Content);
var accessTokenJson = json.RootElement.GetProperty("accessToken").GetRawText();
var acsToken = JsonSerializer.Deserialize<AcsToken>(accessTokenJson);
return new AccessToken(acsToken.token, acsToken.expiresOn);
}
catch (Exception)
{
throw new RequestFailedException(response);
}
default:
throw new RequestFailedException(response);
}
}

private class AcsToken
{
public string token { get; set; }
public DateTimeOffset expiresOn { get; set; }
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using System.Text.Json;
using System.Threading.Tasks;
using Azure.Core;
using Azure.Core.Pipeline;

namespace Azure.Communication
{
internal class EntraTokenGuardPolicy : HttpPipelinePolicy
{
private string _entraTokenCache;
private Response _responseCache;

public override void Process(HttpMessage message, ReadOnlyMemory<HttpPipelinePolicy> pipeline)
{
ProcessAsync(message, pipeline, async: false).EnsureCompleted();
}

public override ValueTask ProcessAsync(HttpMessage message, ReadOnlyMemory<HttpPipelinePolicy> pipeline)
{
return ProcessAsync(message, pipeline, async: true);
}

private async ValueTask ProcessAsync(HttpMessage message, ReadOnlyMemory<HttpPipelinePolicy> pipeline, bool async)
{
var (entraTokenCacheOutdated, token) = IsEntraTokenCacheOutdated(message);
if (entraTokenCacheOutdated || IsAcsTokenCacheOutdated())
{
_entraTokenCache = token;
if (async)
{
await ProcessNextAsync(message, pipeline).ConfigureAwait(continueOnCapturedContext: false);
}
else
{
ProcessNext(message, pipeline);
}
_responseCache = message.Response;
}
else
{
message.Response = _responseCache;
return;
}
}

private (bool CacheOutdated, string EntraToken) IsEntraTokenCacheOutdated(HttpMessage message)
{
var currentEntraToken = string.Empty;
message.Request.Headers.TryGetValue("Authorization", out currentEntraToken);
return (string.IsNullOrEmpty(_entraTokenCache) || currentEntraToken != _entraTokenCache, currentEntraToken);
}
private bool IsAcsTokenCacheOutdated()
{
return _responseCache == null || _responseCache.Status != 200 || !IsAccessTokenValid();
}

private bool IsAccessTokenValid()
{
try
{
var json = JsonDocument.Parse(_responseCache.Content);
var expiresOnString = json.RootElement
.GetProperty("accessToken")
.GetProperty("expiresOn")
.GetString();
var expiresOn = DateTimeOffset.Parse(expiresOnString);
return DateTimeOffset.UtcNow < expiresOn;
}
catch
{
return false;
}
}
}
}
Loading