私は、ADAL4jを使用して認証した後、ユーザーのOneDriveにアクセスするためにMS GraphのAPIを利用するネイティブJavaアプリケーションを設定しようとしています。私はthisライブラリを使用してアクセストークンを取得しています。これまでのところ私は、このコードしている:Microsoft Graph APIのアクセストークンの検証エラー(java)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import javax.naming.ServiceUnavailableException;
import com.microsoft.aad.adal4j.AuthenticationContext;
import com.microsoft.aad.adal4j.AuthenticationResult;
public class Get {
private final static String AUTHORITY = "https://login.windows.net/common/oauth2/v2.0/authorize";
private final static String CLIENT_ID = "29275...011a";
private final static String RESOURCE = "https://graph.windows.net";
public static void main(String[] args) throws Exception {
try (BufferedReader br = new BufferedReader(new InputStreamReader(
System.in))) {
System.out.print("Enter username: ");
String username = br.readLine();
System.out.print("Enter password: ");
String password = br.readLine();
AuthenticationResult result = getAccessTokenFromUserCredentials(
username, password);
System.out.println("Access Token - " + result.getAccessToken());
System.out.println("Refresh Token - " + result.getRefreshToken());
System.out.println("ID Token - " + result.getIdToken());
System.out.println("Expires in - " + result.getExpiresAfter());
}
}
private static AuthenticationResult getAccessTokenFromUserCredentials(
String username, String password) throws Exception {
AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(AUTHORITY, false, service);
Future<AuthenticationResult> future = context.acquireToken(RESOURCE, CLIENT_ID, username, password, null);
result = future.get();
} finally {
service.shutdown();
}
if (result == null) {
throw new ServiceUnavailableException(
"authentication result was null");
}
return result;
}
}
私はそれを実行すると、私はアクセストークン、リフレッシュトークン、IDトークンその後、アカウントの資格情報を入力し、時間に失効するが、すべて印刷されます。次に、クロム「Advanced Rest Client」アドオンを使用して認証トークンをテストします(下のスクリーンショット)。
そして私は、スクリーンショットの下部に示したアクセストークンの検証エラーを取得します。トークンが動かない理由を理解できません。 Azure ADに登録されているアプリに権限が設定されており、ユーザーは既にアプリに許可を与えています。私が考えることができるのは、おそらくスコープが指定されていないことですが、それが問題であるかどうかはわかりません。それはどうすれば指定するのですか?
こんにちは、私はJavaでグラフAPIを使用してOneDriveサポートしたアプリを開発しようとしています。あなたはそれを行うためのSDKを見つけましたか? – cyberjoac
adal4jというソースコード(ここではhttps://github.com/AzureAD/azure-activedirectory-library-for-java)と呼ばれる認証ピース(これは紺碧で行われます)用のものがあります。 OneDriveグラフとの対話に関しては、現在のところありません。私はグラフにhttp呼び出しを行うためにjava.netライブラリに組み込まれた使用を終了しました。 –