我有一个 ASP.Net Web API 2,我在其中实现了以下安全性:https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapi-dotnet https://learn.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 身份验证令牌来访问 Web API,如下所示:
this.httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
无论如何,这有可能吗?如何使用此令牌让我的用户使用我的 Web API?
谢谢 !
教程使用 Azure AD 中的不记名令牌帮助保护 Web API https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapi-dotnet您提到了 AD v1.0 上的目标,并且需要在 Azure 门户上注册您的应用程序。尽管MSAL https://github.com/Azure-Samples/active-directory-xamarin-native-v2以 AD v2.0 为目标,您需要在以下地址注册您的应用程序apps.dev.microsoft.com https://apps.dev.microsoft.com,并且您需要在 Web API 2 中使用中间件,如下所示:
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"))
});
想要了解更多详情,您可以参考活动目录-v2-devquickstarts-dotnet-api https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-devquickstarts-dotnet-api.
另外,你可以参考AppModelv2-WebAPI-DotNet https://github.com/AzureADQuickStarts/AppModelv2-WebAPI-DotNet有关 Web API 后端和移动客户端通过 MSAL 访问 Web API 后端的代码示例。
Update:
我下载了代码示例AppModelv2-WebAPI-DotNet https://github.com/AzureADQuickStarts/AppModelv2-WebAPI-DotNet
-
Follow 如何使用 v2.0 端点注册应用程序 https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-app-registration注册我的应用程序 v2.0 如下:
-
复制应用程序 ID从上面的屏幕截图并将其更新为待办事项列表客户端 and 待办事项列表服务项目如下:
-
Launch 待办事项列表服务首先,然后你可以调试待办事项列表服务如下:
另外,您可以复制Token并利用postman模拟请求,如下:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)