gpt4 book ai didi

java - azure : Change Single Tenant Authentication to Multi Tenant using Java

转载 作者:行者123 更新时间:2023-12-02 02:18:01 25 4
gpt4 key购买 nike

我已经完成了单租户身份验证,这对我来说效果很好。现在我正在将应用程序更改为 Multi-Tenancy 身份验证。我已将应用程序从 azure 的单租户更改为 Multi-Tenancy 。但我无法在 Java 中找到任何用于 Multi-Tenancy 身份验证的代码。我必须对以下代码进行哪些更改才能使其适用于 Multi-Tenancy 身份验证。代码:-

private String getAccessToken() {
String accessToken = "";
try {
ExecutorService service = Executors.newFixedThreadPool(1);
String authorization_url = "https://login.microsoftonline.com/" + Authentication_Constants.TENANT + "/oauth2/authorize/";
AuthenticationContext authContext = new AuthenticationContext(authorization_url, false, service);
ClientCredential clientCred = new ClientCredential(Authentication_Constants.CLIENTID, Authentication_Constants.SECRET);
Future<AuthenticationResult> future = authContext.acquireToken(Authentication_Constants.RESOURCE, clientCred, null);
AuthenticationResult authResult = future.get();
accessToken = authResult.getAccessToken();
} catch (Exception ex) {
System.out.println(ex.getLocalizedMessage());
}
return accessToken;
}

更新:- 我将授权 URL 更改为 https://login.microsoftonline.com/common/oauth2/authorize/这确实为我提供了访问 token 。对于 Multi-Tenancy 应用程序,应用程序的初始注册位于开发人员使用的 Azure AD 租户中。当来自不同租户的用户首次登录应用程序时,Azure AD 会要求他们同意应用程序请求的权限。如果他们同意,则会在用户的租户中创建称为服务主体的应用程序表示,并且可以继续登录。由于我已经拥有用户的凭据,如何在不提供 UI 的情况下获得同意?如何将这些东西插入我当前的代码中以获取不同租户的访问 token ?

更新 2:-我尝试使用以下 api 进行身份验证:-authContext.acquireToken(Authentication_Constants.RESOURCE, Authentication_Constants.CLIENTID, "用户名", Authentication_Constants.password, null);但我发现它不被支持。并得到以下异常:-“error_description”:“AADSTS70002:请求正文必须包含以下参数:'client_secret 或 client_assertion'。所以我在这个 Multi-Tenancy 身份验证中非常迷失。

注意:- 我可以提供用户凭据,而不是转到 Microsoft 的登录页面,该凭据将具有我的 Web 应用程序访问权限或类似默认权限的权限集。有人可以建议一下吗?谢谢!

最佳答案

你所要求的事情无法完成。

您尝试使用的 API(提示缺少客户端 key )是 ROPC 流。它无法表示同意。

为了获得同意,用户必须进入网络浏览器,转至授权端点,并授权您的应用访问其目录。

在我看来,重点是拥有您的用户名和密码的人不能随意授予他们想要的任何权限。一定是用户说这些东西没问题。无论如何,他们永远不必向您的应用程序提供密码。

如果您的应用无法提供网络浏览器 UI,一种方法是使用设备代码身份验证。.NET 示例如下:https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-deviceprofile/ .

在设备代码流中,您请求用户打开浏览器并导航到短 URL。然后他们必须输入显示给他们的代码,然后他们可以在浏览器中表示同意。您的应用程序必须轮询端点才能知道它何时完成。

遗憾的是,Adal4J 似乎尚未提供此 API。不过它在 .NET 版本中可用:https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/blob/dev/adal/src/Microsoft.IdentityModel.Clients.ActiveDirectory/AuthenticationContext.cs#L174 .

关于java - azure : Change Single Tenant Authentication to Multi Tenant using Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48992274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com