Pie*_* P. 6 c# asp.net azure asp.net-web-api azure-ad-msal
我有一个ASP.Net Web API 2,我在其上实现了以下安全性:https: //docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapi-dotnet
它工作,我无法访问控制器,除非我删除[授权]属性.
现在,我在Xamarin应用程序中有一个登录用户.用户通过MSAL身份验证登录,也可以正常工作.非常基本的实施:
var authenticationResult = await App.IdentityClientApp.AcquireTokenSilentAsync(App.ClientScope);
var token = authenticationResult.Token;
Run Code Online (Sandbox Code Playgroud)
现在,我想通过在DefaultRequestHeaders中提供MSAL身份验证令牌来访问Web API,如下所示:
this.httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
Run Code Online (Sandbox Code Playgroud)
无论如何这有可能吗?如何使用此令牌让我的用户使用我的Web API?
谢谢 !
Bru*_*hen 10
教程通过使用您在AD v1.0上提到的Azure AD中的承载令牌来帮助保护Web API,您需要在Azure门户上注册您的应用程序.虽然MSAL的目标是AD v2.0,但您需要在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"))
});
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅active-directory-v2-devquickstarts-dotnet-api.
此外,您可以参考AppModelv2-WebAPI-DotNet获取有关web api后端的代码示例以及通过MSAL访问web api后端的移动客户端.
更新:
我下载了代码示例AppModelv2-WebAPI-DotNet
关注如何使用v2.0端点注册应用程序以注册我的v2.0应用程序,如下所示:
从上面的屏幕截图中复制Application Id并将其更新为TodoListClient和TodoListService项目,如下所示:
首先启动TodoListService,然后您可以按如下方式调试TodoListService:
此外,您可以复制令牌并利用邮递员来模拟请求,如下所示:
| 归档时间: |
|
| 查看次数: |
3971 次 |
| 最近记录: |