当前位置: 首页 > 知识库问答 >
问题:

Azure Active Directory:同意框架已停止授予同意

咸浩初
2023-03-14

我的Azure Active Directory应用程序需要以下委派权限:

  • 读取目录数据
  • 启用登录和读取用户配置文件
  • 访问组织的目录

现在,在我完成了同意框架(通过以管理员用户的身份从表单发布到applyforactority)之后,以非管理员用户的身份登录失败,出现错误消息AADSTS90093(此操作只能由管理员执行)。无益的是,错误消息没有说明“这个操作”实际上是什么,但我怀疑它是第三个操作(访问您的组织的目录)。

    null

这是现有的代码:

private static readonly string ClientId = ConfigurationManager.AppSettings["ida:ClientID"];

[HttpPost]
public ActionResult ApplyForConsent()
{
    string signupToken = Guid.NewGuid().ToString();
    string replyUrl = Url.Action("ConsentCallback", "Account", new { signupToken }, Request.Url.Scheme);
    DatabaseIssuerNameRegistry.CleanUpExpiredSignupTokens();
    DatabaseIssuerNameRegistry.AddSignupToken(signupToken, DateTimeOffset.UtcNow.AddMinutes(5));
    return new RedirectResult(CreateConsentUrl(ClientId, "DirectoryReaders", replyUrl));
}

[HttpGet]
public ActionResult ConsentCallback()
{
    string tenantId = Request.QueryString["TenantId"];
    string signupToken = Request.QueryString["signupToken"];
    if (DatabaseIssuerNameRegistry.ContainsTenant(tenantId))
    {
        return RedirectToAction("Validate");
    }

    string consent = Request.QueryString["Consent"];
    if (!String.IsNullOrEmpty(tenantId) && String.Equals(consent, "Granted", StringComparison.OrdinalIgnoreCase))
    {
        if (DatabaseIssuerNameRegistry.TryAddTenant(tenantId, signupToken))
        {
            return RedirectToAction("Validate");
        }
    }

    const string error = "Consent could not be provided to your Active Directory.  Please contact SharpCloud for assistance.";
    var reply = Request.Url.GetLeftPart(UriPartial.Authority) + Url.Action("Consent", new { error });
    var config = FederatedAuthentication.FederationConfiguration.WsFederationConfiguration;
    var signoutMessage = new SignOutRequestMessage(new Uri(config.Issuer), reply);
    signoutMessage.SetParameter("wtrealm", config.Realm);
    FederatedAuthentication.SessionAuthenticationModule.SignOut();
    return Redirect(signoutMessage.WriteQueryString());
}

private static string CreateConsentUrl(string clientId, string requestedPermissions, string consentReturnUrl)
{
    string consentUrl = String.Format(CultureInfo.InvariantCulture, ConsentUrlFormat, HttpUtility.UrlEncode(clientId));

    if (!String.IsNullOrEmpty(requestedPermissions))
    {
        consentUrl += "&RequestedPermissions=" + HttpUtility.UrlEncode(requestedPermissions);
    }
    if (!String.IsNullOrEmpty(consentReturnUrl))
    {
        consentUrl += "&ConsentReturnURL=" + HttpUtility.UrlEncode(consentReturnUrl);
    }

    return consentUrl;
}

共有1个答案

邰英毅
2023-03-14

我认为这个链接解决了您的问题:

http://blogs.msdn.com/b/aadgraphteam/archive/2015/03/19/update-to-graph-api-actority-permissions.aspx

简单总结一下,现在只有管理员才可以批准一个网络应用程序“•访问你的组织的目录”。

 类似资料:
  • 我们正在开发一个Office外接程序,该外接程序使用Azure AD的组织帐户进行身份验证。外接程序需要管理同意。因此,如果管理员已登录,应引导他表达其管理同意。 我们使用OAuth进行身份验证: 我们通过附加

  • 我已经添加了“user.readwrite.all”的图形权限和如下所示的其他权限,但我不能为添加的请求授予同意权限。甚至我的组织的azure支持团队成员也不能给我许可。为什么没有启用“授予Arcadis管理同意”按钮?为什么会显示“不授予arcadis?是否需要支付此API消耗或如何启用此特性?

  • 2019-07-03 13:27:50 0[注]InnoDB:128个回滚段中有128个处于活动状态。 2019-07-03 13:27:50 0“错误”INNODB:页面[页面ID:space=0,页面编号=305]日志序列号2834539在未来!当前系统日志序列号1604011。 2019-07-03 13:27:50 0[错误]InnoDB:您的数据库可能已损坏,或者您复制了InnoDB表空

  • Authorization Mesos 在 0.20.0 版本增加了给 framewrok 的授权支持。 授权允许: Frameworks 向已经授权的 roles 注册 ( 重新注册 )。 Frameworks 作为经过授权的 users 启动 taks / executors 。 经过授权的 principals 通过 “/shutdown” HTTP endpoint 来关闭 framewo

  • 本文向大家介绍oauth 授权码授予,包括了oauth 授权码授予的使用技巧和注意事项,需要的朋友参考一下 示例 第1步 第2步 资源

  • 简单的用户可以使用该应用程序与同意的权限。 权限范围更改(例如,添加一个新权限范围) 同一个管理员再也拿不到同意书了 我是不是忽略了什么?非常感谢任何帮助。