ポリシーが定義された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つを使用して試行しました。そのため、無効なリクエストエラーが発生しました。