Azure B2C身份验证屏幕未显示
我有一个用vb.net编写的ASP.NET 4.7 WebForms旧应用程序。我需要添加Azure B2C身份验证。因此,我用Azure注册了一个应用程序,并添加了OWIN中间件Nuget软件包,并进行了所有必要的配置更改。我希望在应用程序运行时会看到屏幕上的登录屏幕,但没有发生。该应用程序仅在没有任何身份验证的情况下运行。我想念什么?
这是代码:
startup.vb:
Imports System.Threading.Tasks
Imports Microsoft.IdentityModel.Protocols.OpenIdConnect
Imports Microsoft.IdentityModel.Tokens
Imports Microsoft.Owin
Imports Microsoft.Owin.Security
Imports Microsoft.Owin.Security.Cookies
Imports Microsoft.Owin.Security.Notifications
Imports Microsoft.Owin.Security.OpenIdConnect
Imports Owin
<Assembly: OwinStartup(GetType(InfoWebCore.Startup))>
Namespace InfoWebCore
Public Class Startup
Private Shared clientId As String = ConfigurationManager.AppSettings("ida:ClientId")
Private Shared aadInstance As String = ConfigurationManager.AppSettings("ida:AadInstance")
Private Shared tenant As String = ConfigurationManager.AppSettings("ida:Tenant")
Private Shared redirectUri As String = ConfigurationManager.AppSettings("ida:RedirectUri")
Public Shared SignInPolicyId As String = ConfigurationManager.AppSettings("ida:SignInPolicyId")
Public Sub Configuration(ByVal app As IAppBuilder)
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)
app.UseCookieAuthentication(New CookieAuthenticationOptions())
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignInPolicyId))
End Sub
Private Function AuthenticationFailed(ByVal notification As AuthenticationFailedNotification(Of OpenIdConnectMessage, OpenIdConnectAuthenticationOptions)) As Task
notification.HandleResponse()
If notification.Exception.Message = "access_denied" Then
notification.Response.Redirect("/")
Else
notification.Response.Redirect("/Home/Error?message=" & notification.Exception.Message)
End If
Return Task.FromResult(0)
End Function
Private Function CreateOptionsFromPolicy(ByVal policy As String) As OpenIdConnectAuthenticationOptions
Dim options = New OpenIdConnectAuthenticationOptions With {
.MetadataAddress = String.Format(aadInstance, tenant, policy),
.AuthenticationType = policy,
.ClientId = clientId,
.RedirectUri = redirectUri,
.PostLogoutRedirectUri = redirectUri,
.Notifications = New OpenIdConnectAuthenticationNotifications With {
.AuthenticationFailed = AddressOf AuthenticationFailed
},
.Scope = "openid",
.ResponseType = "id_token",
.TokenValidationParameters = New TokenValidationParameters With {
.NameClaimType = "name"
}
}
Return options
End Function
End Class
End Namespace
web.config:
<authentication mode="None" />
...
<!-- Azure AD B2C Settings -->
<add key="ida:Tenant" value="laticreteb2c.onmicrosoft.com" />
<add key="ida:ClientId" value="8hq22y21-f12g-4a2d-b170-fdaa0b2dc467" />
<add key="ida:AadInstance" value="https://login.microsoftonline.com/{0}/v2.0/.well-known/openid-configuration?p={1}" />
<add key="ida:RedirectUri" value="https://localhost:44379/signin-oidc" />
<add key="ida:SignInPolicyId" value="B2C_1_signin" />
执行确实是configuration()方法...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来都不错,请确保您的web.config与此相似:
startupauth.vb与:
另外,很快就会被弃用。请使用。
All looks good, please ensure your web.config is similar to this:
And your StartupAuth.vb is similar to:
Also, https://login.microsoftonline.com is going to get deprecated soon. Please use b2login.com as detailed in Set redirect URLs to b2clogin.com for Azure Active Directory B2C.