使用 MSAL 身份验证令牌使用 Web API 2
Use MSAL Auth token to consume Web API 2
我有一个 ASP.Net Web API 2,我在上面实施了以下安全措施:
https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapi-dotnet
成功了,除非删除 [Authorize] 属性,否则我无法访问控制器。
现在,我在 Xamarin 应用程序中有一个登录用户。用户通过 MSAL 身份验证登录,也可以正常工作。
非常基本的实现:
var authenticationResult = await App.IdentityClientApp.AcquireTokenSilentAsync(App.ClientScope);
var token = authenticationResult.Token;
现在,我想通过在 DefaultRequestHeaders 中提供 MSAL 身份验证令牌来访问网络 API:
this.httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
这有可能吗?我如何使用此令牌让我的用户使用我的网站 API?
谢谢!
教程Help protect a web API by using bearer tokens from Azure AD you mentioned targets on AD v1.0 and you need to register your apps on Azure Portal. While MSAL targets on AD v2.0 and you need to register your app at apps.dev.microsoft.com,您需要在Web中使用中间件API2如下:
var tvps = new TokenValidationParameters
{
ValidAudience = clientId,
ValidateIssuer = false,
};
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
AccessTokenFormat = new Microsoft.Owin.Security.Jwt.JwtFormat(tvps, new OpenIdConnectCachingSecurityTokenProvider("https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration"))
});
详情请参考active-directory-v2-devquickstarts-dotnet-api。
此外,您可以参考 AppModelv2-WebAPI-DotNet 获取有关 Web api 后端和移动客户端通过 MSAL 访问 Web api 后端的代码示例。
更新:
我下载了代码示例AppModelv2-WebAPI-DotNet
按照 How to register an app with the v2.0 endpoint 注册我的应用程序 v2.0,如下所示:
从上面的屏幕截图中复制 Application Id 并将其更新为 TodoListClient 和 TodoListService 项目如下:
先启动TodoListService,然后你可以调试TodoListService如下:
此外,您可以复制 Token 并利用邮递员模拟请求,如下所示:
我有一个 ASP.Net Web API 2,我在上面实施了以下安全措施: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapi-dotnet
成功了,除非删除 [Authorize] 属性,否则我无法访问控制器。
现在,我在 Xamarin 应用程序中有一个登录用户。用户通过 MSAL 身份验证登录,也可以正常工作。 非常基本的实现:
var authenticationResult = await App.IdentityClientApp.AcquireTokenSilentAsync(App.ClientScope);
var token = authenticationResult.Token;
现在,我想通过在 DefaultRequestHeaders 中提供 MSAL 身份验证令牌来访问网络 API:
this.httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
这有可能吗?我如何使用此令牌让我的用户使用我的网站 API?
谢谢!
教程Help protect a web API by using bearer tokens from Azure AD you mentioned targets on AD v1.0 and you need to register your apps on Azure Portal. While MSAL targets on AD v2.0 and you need to register your app at apps.dev.microsoft.com,您需要在Web中使用中间件API2如下:
var tvps = new TokenValidationParameters
{
ValidAudience = clientId,
ValidateIssuer = false,
};
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
AccessTokenFormat = new Microsoft.Owin.Security.Jwt.JwtFormat(tvps, new OpenIdConnectCachingSecurityTokenProvider("https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration"))
});
详情请参考active-directory-v2-devquickstarts-dotnet-api。
此外,您可以参考 AppModelv2-WebAPI-DotNet 获取有关 Web api 后端和移动客户端通过 MSAL 访问 Web api 后端的代码示例。
更新:
我下载了代码示例AppModelv2-WebAPI-DotNet
按照 How to register an app with the v2.0 endpoint 注册我的应用程序 v2.0,如下所示:
从上面的屏幕截图中复制 Application Id 并将其更新为 TodoListClient 和 TodoListService 项目如下:
先启动TodoListService,然后你可以调试TodoListService如下:
此外,您可以复制 Token 并利用邮递员模拟请求,如下所示: