bounty将在22小时后过期。回答此问题可获得+50声望奖励。DaPanda希望引起更多人关注此问题。
我正在尝试将Microsoft和Google oauth集成到我的Blazor服务器应用程序中。以下是启动时的配置代码:
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddGoogle(options =>
{
options.ClientId = "...";
options.ClientSecret = "...";
options.CallbackPath = "/signin-google";
options.SaveTokens = true;
options.Events.OnCreatingTicket += new CustomClaimsHelper().AddCustomClaims;
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Scope.Add(PeopleServiceService.ScopeConstants.UserinfoProfile);
})
.AddMicrosoftAccount(MicrosoftAccountDefaults.AuthenticationScheme,options =>
{
Configuration.Bind(Constants.AzureAd, options);
options.CallbackPath = "/signin-aad";
options.Events.OnCreatingTicket += new CustomClaimsHelper().AddCustomClaims;
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.SaveTokens = true;
options.Scope.Add("User.Read");
});
services.AddTokenAcquisition();
我对oauth工作流程的期望是这样的:
1.用户点击登录按钮,说这是一个微软用户,他/她被重定向到微软登录屏幕。
- Microsoft完成登录后,会从发送一个授权码到我的应用。然后获取一个访问令牌。访问令牌存储到cookie中。这一切都是由Microsoft oauth中间件自动完成的,该中间件在
AddMicrosoftAccount
方法中配置。
1.我应该能够获取访问令牌并使用它来调用Microsoft Graph API。
但是,当我尝试获取访问令牌以使用_tokenAcquisition.GetAccessTokenForUserAsync(new string []{"User.Read"});
读取Micrsoft用户的配置文件时,我得到以下错误:
无效操作异常:IDW 10503:无法确定云示例。提供的身份验证方案为“Cookie”。Microsoft.Identity.Web推断“Cookie”为身份验证方案。可用的身份验证方案为“Cookie、Google、Microsoft”。请参阅https://aka.ms/id-web/authSchemes
我对www.example.com core中的oauth工作流程的理解是否asp.net有误?我应该如何解决该错误?
1条答案
按热度按时间brjng4g31#
请参阅调用ITokenAcquisition。GetAccessTokenForUserAsync抛出IDW10503错误
我怀疑上面打电话的正确方法是:
即指定authenticationScheme。