编辑
问题似乎出在.NET 8
Blazor应用程序上。
我用这个CLI命令创建了一个全新的Blazor服务器项目:dotnet new blazorserver -au IndividualB2C -o blazor.server.net7
,它在net7.0
中创建了我的项目。然后我把我的B2C连接到它上,它工作得很好。
完整源代码:https://github.com/affableashish/blazor-server-aadb2c/tree/main/blazor.server.net7
x1c 0d1x的数据
但是当我将其更改为.NET 8
时,我遇到了这个错误:
然后,我想使用类似的命令创建一个新的net8.0
项目来为我获取auth设置(-au IndividualB2C
),但看起来它还不存在于.NET 8:
另外,Visual Studio Version 17.8.0 Preview 2.0不提供任何窗口来选择身份验证类型。
的
所以我使用Rider创建了一个新的net8.0
项目(我在Mac上)。我添加了必要的nuget包,并从net7.0
项目中复制了Auth设置。问题仍然存在。
完整源代码:https://github.com/affableashish/blazor-server-aadb2c/tree/main/blazor.server.net8
原创帖子
我一直在尝试设置我的.NET 8 Blazor Web应用程序(服务器端)连接到Azure AD B2C以登录用户并调用安全的API。我已经将主要来自here,here和here的指令拼凑在一起。
Web应用程序启动,将我带到登录页面,让我输入我的凭据:x1c4d 1x
在我点击“登录”后,它就一直在这个网址上旋转:
https://munsonpickles3.b2clogin.com/munsonpickles3.onmicrosoft.com/b2c_1_signupsignin/oauth2/v2.0/authorize?client_id=171b3d8f-8ff1-48b7-a5be-31b0413929ee&redirect_uri=https%3A%2F%2Flocalhost%3A7032%2Fsignin-oidc&response_type=code&scope=openid%20profile%20offline_access%20https%3A%2F%2Fmunsonpickles3.onmicrosoft.com%2Fmunson-api%2Fread&code_challenge=abcDe8FGl6jNrCyWPls56yaKjYuohGtD6vUpSgJe6nA&code_challenge_method=S256&response_mode=form_post&nonce=638123410660191340.YjRmNjYkOTOtN2IkNi00YzgxLTg0ZGEtMTRjNTIxZjcxOWJhMzYwZDk1ZDItOGIxNy00NTRiLThiMzgtOWM2MmVkZTlhYjc1&client_info=1&x-client-brkrver=IDWeb.2.14.0.0&state=CfDJ8L8UGyfUjDBErg6qYS34nXD3E0mLxkSA-InrXSkiEcmt8_eHquvuIC-GnidwO47o_SdGzL58675xXvBYP49rsnKjKti0bUUM1FvXyK5N7-AnYGdzo9SqoahAP5Ps7ykpi93LFX-Uis3xf068-S61dmuEn-8FmIKR3TOxzYJrKxAbG6dbymelCxbJ8xpESofmPRBQ9yKCi4flT8yTOFBtOszKtg2GTmxy9MMeX3edKDxpuTniV4YNXzzw-NpSL7DRHRLYSpbrOasGhk_dUrY0WWL3CY_43FmiKUSLiO60JheXpqYL_D53MA6nf0InABDhmkBNroqZgo7Qnv2hpgXSefZOLNgWkdcyTY8Pe-ZvCPX0ncBfkgqFFmQCNjXip-j0PnjRDLgHlldx70qi9ecSKdXgqvuW8a17QjrrEDAHUSCU&x-client-SKU=ID_NET8_0&x-client-ver=7.0.0.0
最终在重定向URL上以这样的方式结束(注意它试图设置的cookie数量太长,并出现431错误):
IDE的控制台显示此错误:Microsoft.IdentityModel.Tokens.SecurityTokenInvalidIssuerException: IDX40001: Issuer: 'https://munsonpickles3.b2clogin.com/f6c04159-d728-43cd-8ae1-c1f3793844d5/v2.0/', does not match any of the valid issuers provided for this application.
然后,我检查了appsettings.json中的所有配置,这些配置似乎与我的AADB 2C目录中的应用程序注册中的配置相匹配。
"AzureAdB2C": {
"Instance": "https://munsonpickles3.b2clogin.com/",
"Domain": "munsonpickles3.onmicrosoft.com",
"ClientId": "12345d8f-8ff1-48b7-a5be-31b041312345",
"CallbackPath": "/signin-oidc",
"ClientSecret": "12345~6MzNJ3yk.YTq9iP51R1niJFWuxaGx12345",
"SignedOutCallbackPath": "/signout/B2C_1_SignUpSignIn",
"SignUpSignInPolicyId": "B2C_1_SignUpSignIn",
"ResetPasswordPolicyId": "",
"EditProfilePolicyId": ""
}
重定向URL也设置正确:
我通过将重定向URL指向jwt.ms
来运行流,并查看了应用程序抱怨的同一个Issuer:
Issuer: 'https://munsonpickles3.b2clogin.com/f6c04159-d728-43cd-8ae1-c1f3793844d5/v2.0/', does not match any of the valid issuers provided for this application.
型
我已经按照所有的步骤,通过所有的文件,我可以找到,但花了2天后,这一点,我认为我需要帮助。
请看看我的完整源代码,看看你能找到什么。
完整源代码
https://github.com/affableashish/blazor-server-aadb2c的
有两个项目:一个是在net7.0上创建的,另一个是在net8.0上创建的。net7.0项目工作正常。至于net8.0项目,你可以在它的appsettings.json中连接你自己的AD B2C信息,然后给予一个尝试,这个尝试会失败,我在这里报告了错误。
如果有,
fail: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX40001: Issuer: 'https://munsonpickles3.b2clogin.com/f6c04159-d728-43cd-8ae1-c1f3793844d5/v2.0/', does not match any of the valid issuers provided for this application.
fail: Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler[17]
Exception occurred while processing message.
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidIssuerException: IDX40001: Issuer: 'https://munsonpickles3.b2clogin.com/f6c04159-d728-43cd-8ae1-c1f3793844d5/v2.0/', does not match any of the valid issuers provided for this application.
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.ValidateTokenUsingHandlerAsync(String idToken, AuthenticationProperties properties, TokenValidationParameters validationParameters)
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRemoteAuthenticateAsync()
型
.NET版本
8.0.100-预览7.23376.3
还有别的吗?
在aspnetcore github repo中也问过这个问题。
更新
按照ΩmegaMan的建议打开PII日志记录。日志如下所示:
info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10242: Security token: 'eyJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrNHh5b2pORnVtMWtsMll0djhkbE5QNC1jNTdkTzZRR1RWQndhTmsiLCJ0eXAiOiJKV1QifQ.eyJ2ZXIiOiIxLjAiLCJpc3MiOiJodHRwczovL211bnNvbnBpY2ts12345mIyY2xvZ2luLmNvbS9mNmMwNDE1OS1kNzI4LTQzY2QtOGFlMS1jMWYzNzkzODQ0ZDUvdjIuMC8iLCJzdWIiOiJjMDg1NTY2My02NjBiLTQ0YTEtOTkwNC00MzM5ZjVlNWU5YTIiLCJhdWQiOiIxNzFiM2Q4Zi04ZmYxLTQ4YjctYTViZS0zMWIwNDEzOTU1ZWUiLCJleHAiOjE2OTYwMj12345sIm5vbmNlIjoiNjM4MzE2MTYxODUxNzIwNjIwLk9UUmtNR0V5WTJRdFlUazROQzAwTjJRMUxUZzVZalV0TnpobU5EZ3dZekZsTlRRM1pHRmpNbVkxT1RRdE9XWTJOaTAwTWpaaUxUaGxaREF0WVRnd1pUYzBNekk0TVdGbCIsImlhdCI6MTY5NjAxOTM4NSwiYXV0aF90aW1lIjoxNjk2MDE5Mzg1LCJjb3VudHJ5IjoiVW5pdGVkIFN0YXRlcyIsIm5hbWUiOiJBc2hpc2ggS2hhbmFsIiwidGZwIjoiQjJDXzFfU2lnblVwU2lnbkluIiwibmJmIjoxNjk2MDE5Mzg1fQ' has a valid signature.
info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10239: Lifetime of the token is valid.
info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10234: Audience Validated.Audience: '12345d8f-8ff1-48b7-a5be-31b041312345'
fail: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX40001: Issuer: 'https://munsonpickles3.b2clogin.com/f6c04159-d728-43cd-8ae1-c1f3793844d5/v2.0/', does not match any of the valid issuers provided for this application.
fail: Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler[17]
Exception occurred while processing message.
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidIssuerException: IDX40001: Issuer: 'https://munsonpickles3.b2clogin.com/f6c04159-d728-43cd-8ae1-c1f3793844d5/v2.0/', does not match any of the valid issuers provided for this application.
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.ValidateTokenUsingHandlerAsync(String idToken, AuthenticationProperties properties, TokenValidationParameters validationParameters)
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRemoteAuthenticateAsync()
型
1条答案
按热度按时间nzkunb0c1#
不确定你是否解决了这个问题,但似乎NuGet软件包中有一个错误,更新应该可以解决它。请参阅:https://github.com/AzureAD/microsoft-identity-web/discussions/2481