要登录此应用程序,必须将帐户添加到<tenantid>目录

时间:2018-10-03 01:28:53

标签: java azure certificate azure-active-directory bearer-token

我正在尝试进行身份验证和应用程序,并获取承载令牌以备将来使用。我得到的错误是该线程的标题。

另一个线程描述了同样的事情,除了我的代码使用Java。解决方法是使用证书方法。 "To sign into this application the account must be added to the domain.com directory"

有人可以介绍此解决方法的详细步骤:-证书方法 或者如何用其他方法修复以下代码 还是有其他方法可以完成整个任务

这是我的代码

private final static String AUTHORITY = "https://login.microsoftonline.com/<tenantId>/OAuth2/Authorize";
private final static String CLIENT_ID = "<Client_Id>";
private final static String CLIENT_SECRET = "<Secret>";

public static void main(String args[]) throws Exception {

    try (BufferedReader br = new BufferedReader(new InputStreamReader(
            System.in))) {

        String username = CLIENT_ID;
        String password = CLIENT_SECRET;

        service = Executors.newFixedThreadPool(1);

        context = new AuthenticationContext(AUTHORITY, false, service);
        Future<AuthenticationResult> future = context.acquireToken(
                "https://graph.microsoft.com", CLIENT_ID, username, password,
                null);
        result = future.get();

    }
    finally {
        service.shutdown();
    }

}

我已经在AAD应用注册中注册了我的应用。 Client_Id是应用ID,而Secret是上述代码中的密钥

2 个答案:

答案 0 :(得分:1)

如果您想使代码以当前形式运行而不需要任何解决方法,请检查以下内容-

  1. 确保在代码的第一行中指定了正确的tenantId GUID

    获取tenantid的步骤-

    登录到Azure门户,导航到您的Azure AD,转到下面的屏幕快照中的属性,目录ID应该为您提供GUID。

enter image description here

 private final static String AUTHORITY = "https://login.microsoftonline.com/<tenantId>/OAuth2/Authorize";
  1. 请确保您使用的用户名是属于AzureAD租户的用户。

    一个可能的原因可能是您使用的是Microsoft帐户,例如xyz@outlook.com或hotmail.com等。请尝试使用在此Azure AD中创建的帐户,例如xyz@yourtenantdomain.onmicrosoft.com或任何其他帐户租户使用的经过验证的域。

Future<AuthenticationResult> future = context.acquireToken("https://graph.microsoft.com", CLIENT_ID, username, password, null);

答案 1 :(得分:0)

如果您要使用证书凭据对应用进行身份验证,则可以参考此article

步骤

1。Uploading the certificate file

2。Updating the application manifest

代码示例(使用C#,您可以参考): Authenticating to Azure AD in daemon apps with certificates

它还显示了如何使用New-SelfSignedCertificate Powershell命令create a self-signed certificate。您还可以利用app creation scripts来创建证书,计算指纹等等。