我使用以下代码:
var stateId = Guid.NewGuid().ToString();
var stateParam = "&state=" + stateId;
var tenantId = "XXXXXXXXXXXXXXXXXXXX";
var clientId = "XXXXXXXXXXXXXXXXXXXXXXX";
var authority = String.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", tenant);
AuthenticationContext authContext = new AuthenticationContext(authority);
var authorizationUrl = authContext.GetAuthorizationRequestURL("", clientId, redirectUri, UserIdentifier.AnyUser, stateParam).AbsoluteUri;
对于Web应用程序,在回调/重定向URL中获取访问令牌。
工作正常。但我注意到一些奇怪的事情。
上面的代码,我指定了权限的tanantId,它是我的Azure帐户A中的Azure目录之一。
我还有另一个azure帐户B,它根本与A无关。但是当我在浏览器中登录帐户B,然后运行上面的代码时,它还会返回一个有效的代码,我可以通过AcquireTokenByAuthorizationCodeAsync调用获取访问令牌,并指定了tenantId,但DisplayableId是其中之一帐户B中的用户。
我的理解是,由于我在权限中指定了tenantId,它应该只对该租户中的用户进行扩展,如何授予其他租户中的用户?
答案 0 :(得分:0)
tenantID确定必须发布令牌的租户。这并不一定意味着它必须是认证用户的同一租户。如果您的租户B中的用户在租户A中注册为访客,则可以从A成功获取代码和令牌。