2017-02-16 5 views
1

ポリシーが定義されたAzure Active Directory B2CとB2Cブレードに登録されたアプリケーションがあります。 .NET Webアプリケーション内でOWINパイプラインを使用して、ユーザーをアプリケーションに署名できます。しかし、そのユーザーは、AAD B2Cから返送されたJWTを使用してGraph APIにアクセスすることはできないようです。現在ログインしているB2CでMicrosoft Graph APIにアクセスする方法

最初の問題は利用可能なスコープのようです。私のアプリケーションでStartup.Auth.csの私OWINのセットアップでは、私はこのコードを持っている:私はスコープを設定

 private OpenIdConnectAuthenticationOptions CreateOptionsFromPolicy(string policy) 
    { 
     return new OpenIdConnectAuthenticationOptions 
     { 
      // For each policy, give OWIN the policy-specific metadata address, and 
      // set the authentication type to the id of the policy 
      MetadataAddress = String.Format(aadInstance, tenant, policy), 
      AuthenticationType = policy, 

      // These are standard OpenID Connect parameters, with values pulled from web.config 
      ClientId = clientId, 
      RedirectUri = redirectUri, 
      PostLogoutRedirectUri = redirectUri, 
      Notifications = new OpenIdConnectAuthenticationNotifications 
      { 
       AuthenticationFailed = AuthenticationFailed, 
      }, 
      Scope = "openid profile offline_access", 
      ResponseType = "id_token", 

      // This piece is optional - it is used for displaying the user's name in the navigation bar. 
      TokenValidationParameters = new TokenValidationParameters 
      { 
       NameClaimType = "name", 
       SaveSigninToken = true, 
      }, 
     }; 
    } 

、I:

 private static string clientId = ConfigurationManager.AppSettings["ida:AppId"]; 
    private static string clientSecret = ConfigurationManager.AppSettings["ida:AppSecret"]; 
    private static string aadInstance = ConfigurationManager.AppSettings["ida:AadInstance"]; 
    private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"]; 
    private static string redirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"]; 
    private static string graphScopes = ConfigurationManager.AppSettings["ida:GraphScopes"]; 

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

    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)); 
    } 

その後、このファイルで、私はこれを持っています後でグラフにアクセスするために、hereのスコープの1つを使用して試行しました。そのため、無効なリクエストエラーが発生しました。

答えて

1

残念ながら、Microsoft GraphはAAD B2Cによって発行されたトークンをサポートしていません。これは私たちが時間をかけて修正しようとしているものです。その間は、通常のAAD STS(v1またはv2エンドポイントから)からトークンを取得する必要があります。をご覧ください。https://graph.microsoft.io/en-us/docs/authorization/auth_overview

希望します。

関連する問題