Skip to content

Commit 729cd6f

Browse files
authored
Merge pull request #97545 from vanillajonathan/patch-3
Update code from .NET 5 to .NET 6
2 parents d7eea5e + 31a0bb5 commit 729cd6f

File tree

1 file changed

+24
-48
lines changed

1 file changed

+24
-48
lines changed

articles/active-directory/develop/scenario-web-api-call-api-app-configuration.md

Lines changed: 24 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -81,27 +81,19 @@ Instead of a client secret, you can provide a client certificate. The following
8181

8282
Microsoft.Identity.Web provides several ways to describe certificates, both by configuration or by code. For details, see [Microsoft.Identity.Web wiki - Using certificates](https://github.com/AzureAD/microsoft-identity-web/wiki/Using-certificates) on GitHub.
8383

84-
## Startup.cs
84+
## Program.cs
8585

86-
Your web API will need to acquire a token for the downstream API. You specify it by adding the `.EnableTokenAcquisitionToCallDownstreamApi()` line after `.AddMicrosoftIdentityWebApi(Configuration)`. This line exposes the `ITokenAcquisition` service, that you can use in your controller/pages actions. However, as you'll see in the next two bullet points, you can do even simpler. You'll also need to choose a token cache implementation, for example `.AddInMemoryTokenCaches()`, in *Startup.cs*:
86+
Your web API will need to acquire a token for the downstream API. You specify it by adding the `.EnableTokenAcquisitionToCallDownstreamApi()` line after `.AddMicrosoftIdentityWebApi(Configuration)`. This line exposes the `ITokenAcquisition` service, that you can use in your controller/pages actions. However, as you'll see in the next two bullet points, you can do even simpler. You'll also need to choose a token cache implementation, for example `.AddInMemoryTokenCaches()`, in *Program.cs*. If you use ASP.NET Core 3.1 or 5.0 the code will be similar but in the *Startup.cs* file.
8787

8888
```csharp
8989
using Microsoft.Identity.Web;
9090

91-
public class Startup
92-
{
93-
// ...
94-
public void ConfigureServices(IServiceCollection services)
95-
{
96-
// ...
97-
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
98-
.AddMicrosoftIdentityWebApi(Configuration, Configuration.GetSection("AzureAd"))
99-
.EnableTokenAcquisitionToCallDownstreamApi()
100-
.AddInMemoryTokenCaches();
101-
// ...
102-
}
103-
// ...
104-
}
91+
// ...
92+
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
93+
.AddMicrosoftIdentityWebApi(Configuration, Configuration.GetSection("AzureAd"))
94+
.EnableTokenAcquisitionToCallDownstreamApi()
95+
.AddInMemoryTokenCaches();
96+
// ...
10597
```
10698

10799
If you don't want to acquire the token yourself, *Microsoft.Identity.Web* provides two mechanisms for calling a downstream web API from another API. The option you choose depends on whether you want to call Microsoft Graph or another API.
@@ -111,26 +103,18 @@ If you don't want to acquire the token yourself, *Microsoft.Identity.Web* provid
111103
If you want to call Microsoft Graph, Microsoft.Identity.Web enables you to directly use the `GraphServiceClient` (exposed by the Microsoft Graph SDK) in your API actions. To expose Microsoft Graph:
112104

113105
1. Add the [Microsoft.Identity.Web.MicrosoftGraph](https://www.nuget.org/packages/Microsoft.Identity.Web.MicrosoftGraph) NuGet package to your project.
114-
1. Add `.AddMicrosoftGraph()` after `.EnableTokenAcquisitionToCallDownstreamApi()` in the *Startup.cs* file. `.AddMicrosoftGraph()` has several overrides. Using the override that takes a configuration section as a parameter, the code becomes:
106+
1. Add `.AddMicrosoftGraph()` after `.EnableTokenAcquisitionToCallDownstreamApi()` in the *Program.cs* file. `.AddMicrosoftGraph()` has several overrides. Using the override that takes a configuration section as a parameter, the code becomes:
115107

116108
```csharp
117109
using Microsoft.Identity.Web;
118110

119-
public class Startup
120-
{
121-
// ...
122-
public void ConfigureServices(IServiceCollection services)
123-
{
124-
// ...
125-
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
126-
.AddMicrosoftIdentityWebApi(Configuration, Configuration.GetSection("AzureAd"))
127-
.EnableTokenAcquisitionToCallDownstreamApi()
128-
.AddMicrosoftGraph(Configuration.GetSection("GraphBeta"))
129-
.AddInMemoryTokenCaches();
130-
// ...
131-
}
132-
// ...
133-
}
111+
// ...
112+
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
113+
.AddMicrosoftIdentityWebApi(Configuration, Configuration.GetSection("AzureAd"))
114+
.EnableTokenAcquisitionToCallDownstreamApi()
115+
.AddMicrosoftGraph(Configuration.GetSection("GraphBeta"))
116+
.AddInMemoryTokenCaches();
117+
// ...
134118
```
135119

136120
### Option 2: Call a downstream web API other than Microsoft Graph
@@ -140,26 +124,18 @@ To call a downstream API other than Microsoft Graph, *Microsoft.Identity.Web* pr
140124
```csharp
141125
using Microsoft.Identity.Web;
142126

143-
public class Startup
144-
{
145-
// ...
146-
public void ConfigureServices(IServiceCollection services)
147-
{
148-
// ...
149-
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
150-
.AddMicrosoftIdentityWebApi(Configuration, "AzureAd")
151-
.EnableTokenAcquisitionToCallDownstreamApi()
152-
.AddDownstreamWebApi("MyApi", Configuration.GetSection("GraphBeta"))
153-
.AddInMemoryTokenCaches();
154-
// ...
155-
}
156-
// ...
157-
}
127+
// ...
128+
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
129+
.AddMicrosoftIdentityWebApi(Configuration, "AzureAd")
130+
.EnableTokenAcquisitionToCallDownstreamApi()
131+
.AddDownstreamWebApi("MyApi", Configuration.GetSection("GraphBeta"))
132+
.AddInMemoryTokenCaches();
133+
// ...
158134
```
159135

160136
As with web apps, you can choose various token cache implementations. For details, see [Microsoft identity web - Token cache serialization](https://aka.ms/ms-id-web/token-cache-serialization) on GitHub.
161137

162-
The following image shows the various possibilities of *Microsoft.Identity.Web* and their impact on the *Startup.cs* file:
138+
The following image shows the various possibilities of *Microsoft.Identity.Web* and their impact on the *Program.cs* file:
163139

164140
:::image type="content" source="media/scenarios/microsoft-identity-web-startup-cs.svg" alt-text="Block diagram showing service configuration options in startup dot C S for calling a web API and specifying a token cache implementation":::
165141

0 commit comments

Comments
 (0)