0

我從this官方教程實施Azure的Active Directory的B2C意想不到的問號。 運行我的代碼,它說 404 - File or directory not found. The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable. 的問題是與URL,它包含問號(screenshot)。代替問號應該有我的號(&),如果我手動替換「?」與「&」它工作正常。 這裏我啓動類Azure的Active Directory的B2C,404錯誤,在URL

public partial class Startup 
    { 
     // App config settings 
     public static string ClientId = ConfigurationManager.AppSettings["ida:ClientId"]; 
     public static string ClientSecret = ConfigurationManager.AppSettings["ida:ClientSecret"]; 
     public static string AadInstance = ConfigurationManager.AppSettings["ida:AadInstance"]; 
     public static string Tenant = ConfigurationManager.AppSettings["ida:Tenant"]; 
     public static string RedirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"]; 
     public static string ServiceUrl = ConfigurationManager.AppSettings["api:TaskServiceUrl"]; 

    // B2C policy identifiers 
    public static string SignUpSignInPolicyId = ConfigurationManager.AppSettings["ida:SignUpSignInPolicyId"]; 
    public static string EditProfilePolicyId = ConfigurationManager.AppSettings["ida:EditProfilePolicyId"]; 
    public static string ResetPasswordPolicyId = ConfigurationManager.AppSettings["ida:ResetPasswordPolicyId"]; 

    public static string DefaultPolicy = SignUpSignInPolicyId; 

    // API Scopes 
    public static string ApiIdentifier = ConfigurationManager.AppSettings["api:ApiIdentifier"]; 
    public static string ReadTasksScope = ApiIdentifier + ConfigurationManager.AppSettings["api:ReadScope"]; 
    public static string WriteTasksScope = ApiIdentifier + ConfigurationManager.AppSettings["api:WriteScope"]; 
    public static string[] Scopes = new string[] { ReadTasksScope, WriteTasksScope }; 

    // OWIN auth middleware constants 
    public const string ObjectIdElement = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"; 

    // Authorities 
    public static string Authority = String.Format(AadInstance, Tenant, DefaultPolicy); 

    // Initialize variables ... 

    // Configure the OWIN middleware 
    public void ConfigureAuth(IAppBuilder app) 
    { 
     app.UseCookieAuthentication(new CookieAuthenticationOptions()); 
     app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

     app.UseOpenIdConnectAuthentication(
      new OpenIdConnectAuthenticationOptions 
      { 
      // Generate the metadata address using the tenant and policy information 
      MetadataAddress = Authority, 

      // These are standard OpenID Connect parameters, with values pulled from web.config 
      ClientId = ClientId, 
       RedirectUri = RedirectUri, 
       PostLogoutRedirectUri = RedirectUri, 

      // Specify the callbacks for each type of notifications 
      Notifications = new OpenIdConnectAuthenticationNotifications 
       { 
        RedirectToIdentityProvider = OnRedirectToIdentityProvider, 
        AuthorizationCodeReceived = OnAuthorizationCodeReceived, 
        AuthenticationFailed = OnAuthenticationFailed, 
       }, 

      // Specify the claims to validate 
      TokenValidationParameters = new TokenValidationParameters 
       { 
        NameClaimType = "name" 
       }, 

      // Specify the scope by appending all of the scopes requested into one string (seperated by a blank space) 
      Scope = $"{OpenIdConnectScopes.OpenId} {ReadTasksScope} {WriteTasksScope}" 
      } 
     ); 
    }` 

這裏webconfig

<add key="ida:Tenant" value="explicarte.onmicrosoft.com" /> 
<add key="ida:ClientId" value="a2d**********************" /> 
<add key="ida:ClientSecret" value="0f**************" /> 
<add key="ida:AadInstance" value="https://login.microsoftonline.com/{0}/v2.0/.well-known/openid-configuration?p={1}" /> 
<add key="ida:RedirectUri" value="https://explicarted.azurewebsites.net/" /> 
<add key="ida:SignUpSignInPolicyId" value="B2C_1_MySignupSigninPolicy" /> 
<add key="EditProfilePolicyId" value="B2C_1_myProfileEditingPolicy" /> 
<add key="ResetPasswordPolicyId" value="B2C_1_PasswordResetPolicy" /> 
<add key="api:ApiIdentifier" value="https://explicarted.azurewebsites.net/tasks/" /> 
<add key="api:ReadScope" value="read" /> 
<add key="api:WriteScope" value="write" /> 
<add key="api:TaskServiceUrl" value="https://explicarted.azurewebsites.net/" /> 
+0

我認爲這個問題是你已經添加了「?」標記爲ida:AadInstance url。庫代碼不掃描url,只是附加參數。 – mikalai

回答

2

周圍有在.net庫中的一個處理預先存在的查詢字符串參數的已知問題。

您最有可能使用這些舊版本中的一個。我認爲,具體問題庫Microsoft.IdentityModel.Protocol.Extensions

您應該嘗試更新此庫或僅將該示例作爲起點,因爲該庫已具有正確(更新)的庫。

PS:應該使用以下授權:

https://login.microsoftonline.com/TFP/{0}/{1} /v2.0/.well-known/openid-configuration

相關問題