尝试实现Azure Active Directory B2C给出了404错误

时间:2016-09-29 16:15:26

标签: azure http-status-code-404 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));
    } ...

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

真的很高兴,任何帮助都会非常感激。

致以诚挚的问候,Toño。

3 个答案:

答案 0 :(得分:14)

我也有同样的问题。您可以检查的一些事项是:

  • 确保webconfig和Azure AD中的策略名称 是完全相同的,包括正确的大/小写

  • 确保AadInstance有一个尾部斜杠(/)

  • 确保您拥有最新版本的owin和microsoft.identitymodel.protocol.extensions库(建议 从NuGet重新加载它们

    • 最后一个问题是我最难找到的问题。如果 然后,浏览器中生成的URL包含2个问号 这是修复。

答案 1 :(得分:2)

如果您尝试使用.auth / me,请确保在“身份验证设置”中启用了“存储令牌”。否则它会给你404. :)

答案 2 :(得分:0)

看起来您的参数ida:AadInstance错误。应该是:

https://{0}.b2clogin.com/{1}/v2.0/.well-known/openid-configuration?p={2}
{0}: tenantid
{1}: tenantid.onmicrosoft.com
{2}: policy name

如果您希望保留login.microsoftonline.com,则网址必须为:

https://login.microsoftonline.com/tfp/{0}/{1}/v2.0/
{0}: tenantid.onmicrosoft.com
{1}: policy name

问候 康拉德