Azure应用程序注册与企业应用程序

Azure应用程序注册与企业应用程序,azure,azure-active-directory,Azure,Azure Active Directory,我已经看到一些服务可以在我的ActiveDirectory->EnterpriseApplications页面中添加一个条目,而我只需在它们的页面上输入我的Azure帐户用户ID和密码。使用这个,他们可以使用Azure RestAPI并获取我的订阅和资源列表等 string authorizationRequest = String.Format( "https://login.microsoftonline.com/common/oauth2/v2.0/auth

我已经看到一些服务可以在我的ActiveDirectory->EnterpriseApplications页面中添加一个条目,而我只需在它们的页面上输入我的Azure帐户用户ID和密码。使用这个,他们可以使用Azure RestAPI并获取我的订阅和资源列表等

string authorizationRequest = String.Format(
                "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}&scope={3}",
                 Uri.EscapeDataString(ConfigurationManager.AppSettings["ida:ClientID"]),
                 Uri.EscapeDataString("mywebsite.com"),
                 Uri.EscapeDataString(stateMarker), "https://graph.microsoft.com/.default"
                 );
甚至我已经创建了一个自定义web应用程序(托管在一些公共服务器上),并且我希望使用RESTAPI访问用户的订阅和资源。但要做到这一点,它要求我做评估。但我不希望每个用户都进行应用程序注册,而是希望使用某种基于REST的API以编程方式将该条目添加到AppRegistration中,他们所要做的就是为我提供对具有必要权限的帐户的访问。然而,我找不到这方面的任何文档

string authorizationRequest = String.Format(
                "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}&scope={3}",
                 Uri.EscapeDataString(ConfigurationManager.AppSettings["ida:ClientID"]),
                 Uri.EscapeDataString("mywebsite.com"),
                 Uri.EscapeDataString(stateMarker), "https://graph.microsoft.com/.default"
                 );
有一个线程说这是可能的,但没有提供任何必要的参考

string authorizationRequest = String.Format(
                "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}&scope={3}",
                 Uri.EscapeDataString(ConfigurationManager.AppSettings["ida:ClientID"]),
                 Uri.EscapeDataString("mywebsite.com"),
                 Uri.EscapeDataString(stateMarker), "https://graph.microsoft.com/.default"
                 );
--------------编辑---------------- 谢谢朱纳斯

string authorizationRequest = String.Format(
                "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}&scope={3}",
                 Uri.EscapeDataString(ConfigurationManager.AppSettings["ida:ClientID"]),
                 Uri.EscapeDataString("mywebsite.com"),
                 Uri.EscapeDataString(stateMarker), "https://graph.microsoft.com/.default"
                 );
MS文档真的很混乱,我使用这个.net代码来获取一些“代码”,但是我们如何处理这些代码呢

string authorizationRequest = String.Format(
                "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}&scope={3}",
                 Uri.EscapeDataString(ConfigurationManager.AppSettings["ida:ClientID"]),
                 Uri.EscapeDataString("mywebsite.com"),
                 Uri.EscapeDataString(stateMarker), "https://graph.microsoft.com/.default"
                 );
此代码不起作用

string authorizationRequest = String.Format(
                "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}&scope={3}",
                 Uri.EscapeDataString(ConfigurationManager.AppSettings["ida:ClientID"]),
                 Uri.EscapeDataString("mywebsite.com"),
                 Uri.EscapeDataString(stateMarker), "https://graph.microsoft.com/.default"
                 );
            ClientCredential credential = new ClientCredential(ConfigurationManager.AppSettings["ida:ClientID"],
                                                               ConfigurationManager.AppSettings["ida:Password"]);
            AuthenticationContext authContext = new AuthenticationContext("https://login.microsoftonline.com/common/");
            AuthenticationResult result = await authContext.AcquireTokenByAuthorizationCodeAsync(
                code, new Uri("mywebsite.com"), credential);
并且给出了一个错误,似乎还有两种API v1.0和v2.0。另外还有一个页面,我们需要添加应用注册,不知道为什么微软创建了2个页面 如果我不在这里创建应用程序并在Azure门户上创建它,那么当我运行代码的第一部分时会出现此错误

string authorizationRequest = String.Format(
                "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}&scope={3}",
                 Uri.EscapeDataString(ConfigurationManager.AppSettings["ida:ClientID"]),
                 Uri.EscapeDataString("mywebsite.com"),
                 Uri.EscapeDataString(stateMarker), "https://graph.microsoft.com/.default"
                 );

错误=未经授权的客户端&错误描述=+客户端+不存在。+如果+你+是+应用程序+开发者%2c+通过+应用程序+管理+站点+at+配置+新+应用程序+。

我认为你可以创建多租户应用程序,你只需要注册一次应用程序。如果其他租户中的用户没有权限同意,他们可以使用它。此处的链接表示,我们仍然需要AppPresition条目,并且这些不是单个用户帐户中的多个租户,而是多个Azure用户帐户的单个租户。这正是多租户应用的场景。其工作方式是在租户中创建应用程序注册(应用程序),这也会在租户中创建企业应用程序(服务主体)。然后,当其他租户用户想要登录到您的应用程序时,他们会授予您的应用程序所需的权限,并在其租户中创建企业应用程序(服务主体)。此SP有效地在其租户中镜像您的应用程序。有关后续操作,请参阅编辑部分
string authorizationRequest = String.Format(
                "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}&scope={3}",
                 Uri.EscapeDataString(ConfigurationManager.AppSettings["ida:ClientID"]),
                 Uri.EscapeDataString("mywebsite.com"),
                 Uri.EscapeDataString(stateMarker), "https://graph.microsoft.com/.default"
                 );