【发布时间】:2021-01-14 10:09:52
【问题描述】:
我遵循this guide 为我的 Blazor Web Assembly 应用程序实施某种身份验证。我在某个服务器上运行了一个 Identity Server 4 实例,它似乎完全可以运行。
我的问题是,在上面的指南中,传递给身份服务器的returnUrl 显然不是本地 url。通过深入研究 Identity Server 的代码,我发现如果返回 url 不是本地的,它总是无法登录用户:
public async Task<AuthorizationRequest> GetAuthorizationContextAsync(string returnUrl)
{
var result = await _returnUrlParser.ParseAsync(returnUrl);
if (result != null)
{
_logger.LogTrace("AuthorizationRequest being returned");
}
else
{
_logger.LogTrace("No AuthorizationRequest being returned");
}
return result;
}
在上面来自DefaultIdentityServerInteractionService 的代码中,ParseAsync() 调用IsLocal() 导致result 为空,这反过来又在我的日志中产生以下内容:
2020-09-28T19:37:25.932782009Z [2020-09-28T19:37:25.9324455+00:00] [VRB] [] [IdentityServer4.Services.OidcReturnUrlParser] returnUrl is not valid
2020-09-28T19:37:25.932807561Z [2020-09-28T19:37:25.9325314+00:00] [VRB] [] [IdentityServer4.Services.OidcReturnUrlParser] No AuthorizationRequest being returned
2020-09-28T19:37:25.932817324Z [2020-09-28T19:37:25.9325559+00:00] [VRB] [] [IdentityServer4.Services.DefaultIdentityServerInteractionService] No AuthorizationRequest being returned
有人能指出我在这里不理解的地方吗?我可以提供更多信息吗?
【问题讨论】:
标签: identityserver4 openid-connect blazor-webassembly