尝试实施Azure Active Directory B2C时出现404错误

人气:635 发布:2022-10-16 标签: http-status-code-404 azure azure-ad-b2c

问题描述

我正尝试在我正在开发的新页面中实现Azure Active Directory B2C,但尝试从我的页面登录时遇到此404 - File or directory not found错误。

我创建了租户,注册了我的应用程序,创建了我的策略,整个交易。我可以从Azure门户网站测试它们,没有太多问题。然而,我按照official tutorial上的说明执行了我页面中的策略,但无济于事,我收到了前面提到的404错误,好像缺少了什么。 我甚至下载了张贴在那里的代码,它可以工作了!

我尝试比较了这两个代码,但没有真正看到区别。但是,我将我的代码粘贴到这里,希望您能帮助我。

WEB.CONFIG

<add key="ida:Tenant" value="PlataformaXXX.onmicrosoft.com" />
<add key="ida:ClientId" value="84d2a6e6-4cac-4c53-a5ff-XXXXXXXXXXXX" />
<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:59744/" />
<add key="ida:SignUpPolicyId" value="B2C_1_Sign_Up" />
<add key="ida:SignInPolicyId" value="B2C_1_Sign_In" />
<add key="ida:UserProfilePolicyId" value="B2C_1_Edit" />

STARTUP.AUTH.CS

public partial class Startup
{
    // App config settings
    private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
    private static string aadInstance = ConfigurationManager.AppSettings["ida:AadInstance"];
    private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"];
    private static string redirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"];

    // B2C policy identifiers
    public static string SignUpPolicyId = ConfigurationManager.AppSettings["ida:SignUpPolicyId"];
    public static string SignInPolicyId = ConfigurationManager.AppSettings["ida:SignInPolicyId"];
    public static string ProfilePolicyId = ConfigurationManager.AppSettings["ida:UserProfilePolicyId"];

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        // Configure OpenID Connect middleware for each policy
        app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignUpPolicyId));
        app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(ProfilePolicyId));
        app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignInPolicyId));
    } ...

如果需要任何其他代码块,请告诉我。

真的,伙计们,我们将非常感谢您的帮助。

致以最诚挚的问候。

推荐答案

我也遇到了同样的问题。您可以检查的一些内容包括:

确保您的网络配置和Azure AD中的策略名称 是否完全相同,包括正确的大写/小写

确保AadInstance的尾部有斜杠(/)

确保您拥有最新版本的owin和microsoft.inotyModel.Protocol.Extensions库(建议 从NuGet重新加载它们)

这最后一个问题是我最难找到的。如果 浏览器中的结果URL包含2个问号,然后 这就是解决办法。

685