我有一个移动应用程序(内置xamarin),它使用Xamarin.Auth让用户对Microsofts Oauth(https://login.live.com/oauth20_authorize.srf)进行身份验证 . 这适用于finns,我将access_token检索回我的移动应用程序 .
现在,我已经创建了一个ASP NET Core 2.0 Web API,以便作为我的应用程序后端 . 我希望这个后端验证具有有效MS令牌的人正在与之通信 . 我正在通过 Headers “授权”“Bearer XYZ ....”从客户端传递我的令牌 .
现在我的问题 . 我对如何配置我的Web API感到有点困惑 . 在ConfigureServices方法中,我应该使用“AddJwtBearer(..)”或“AddOpenIdConnect(..)”还是“AddMicrosoftAccount(...)”?当使用Microsoft帐户时,我的webapi只是将我重定向到MS登录,这不是我想要的 . 如果没有给出有效的令牌,我希望我的后端返回“未授权” . 使用JwtBearer时,我的后端失败,并显示消息“没有可用于令牌的SecurityTokenValidator” .
我的jwt配置:
services.AddAuthentication(options =>
{
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(jwtOptions =>
{
jwtOptions.Authority = "https://login.live.com";
jwtOptions.Audience = "myClientId";
jwtOptions.RequireHttpsMetadata = false;
});
在配置中,我有app.UseAuthentication()在app.UseMvc()之前
我哪里错了?最好的问候Andreas