应用程序“”未配置为多租户应用程序

2024-06-23

我正在尝试开发单租户应用程序,但登录时收到以下错误消息:

“应用程序“(应用程序 ID)”未配置为多租户应用程序。“2018 年 10 月 15 日”之后创建的此类应用程序不支持使用 /common 端点。使用特定于租户的端点或配置应用程序成为多租户。”

  1. 我在 Azure AD 门户中的“应用程序注册”=>“身份验证”=>“支持的帐户类型”部分下验证了“仅限此组织目录中的帐户(仅限###### - 单个租户)”选项已被选择。

  2. 然后我在我的代码中确定了 'https://login.microsoftonline.com/ https://login.microsoftonline.com/{tenantID}'端点正在使用中。换句话说,代码中的任何地方都没有提到“/common”端点。

    Private Shared appId As String = ConfigurationManager.AppSettings("ida:ClientId")
    Private Shared appSecret As String = ConfigurationManager.AppSettings("ida:ClientSecret")
    Private Shared redirectUri As String = ConfigurationManager.AppSettings("ida:PostLogoutRedirectUri")
    Private Shared graphScopes As String = ConfigurationManager.AppSettings("ida:AppScopes")
    Private Shared sAzureAdInstance As String = "https://login.microsoftonline.com/"
    Private Shared sTenant As String = ConfigurationManager.AppSettings("ida:TenantId")
    Private Shared sAuthority As String = sAzureAdInstance & sTenant

    Public Sub ConfigureAuth(ByVal app As IAppBuilder)
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)
        app.UseCookieAuthentication(New CookieAuthenticationOptions())
        app.UseOpenIdConnectAuthentication(New OpenIdConnectAuthenticationOptions With {
            .ClientId = appId,
            .Scope = $"openid email profile offline_access {graphScopes}",
**            .Authority = sAuthority, **
            .RedirectUri = redirectUri,
            .PostLogoutRedirectUri = redirectUri,
            .TokenValidationParameters = New TokenValidationParameters With {
                .ValidateIssuer = False
            },
            .Notifications = New OpenIdConnectAuthenticationNotifications With {
                .AuthenticationFailed = AddressOf OnAuthenticationFailedAsync,
                .AuthorizationCodeReceived = AddressOf OnAuthorizationCodeReceivedAsync,
            }
        })

    End Sub

我希望我的应用程序能够在单租户模式下运行。我无法找到与此问题相关的有意义的文档。

EDIT:

我已经在代码中隔离了错误的方法,以下代码片段显示了其上下文:

Dim signedInUser = New ClaimsPrincipal(notification.AuthenticationTicket.Identity)
Dim idClient As IConfidentialClientApplication = ConfidentialClientApplicationBuilder.Create(appId).WithRedirectUri(redirectUri).WithClientSecret(appSecret).Build()
Dim scopes As String() = graphScopes.Split(" "c)
'NOTE:  The scopes string array contains the following two values: User.Read and Calendars.Read.
Dim authResult = Await idClient.AcquireTokenByAuthorizationCode(scopes, notification.Code).ExecuteAsync()
'EXECUTION HALTS HERE

我无法辨别之间的相关性通过授权代码获取令牌()方法和错误信息。我不太清楚可能出了什么问题。

非常感谢任何帮助。


我对vb不是很熟悉,但是参考c#代码,可以手动指定Authority:

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
    {
        // The `Authority` represents the v2.0 endpoint - https://login.microsoftonline.com/common/v2.0
        Authority = Globals.Authority,
        ClientId = Globals.ClientId,
        RedirectUri = Globals.RedirectUri,
        PostLogoutRedirectUri = Globals.RedirectUri,
        Scope = Globals.BasicSignInScopes + " Mail.Read", // a basic set of permissions for user sign in & profile access "openid profile offline_access"
        TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = false,
            // In a real application you would use IssuerValidator for additional checks, like making sure the user's organization has signed up for your app.
            //     IssuerValidator = (issuer, token, tvp) =>
            //     {
            //        //if(MyCustomTenantValidation(issuer))
            //        return issuer;
            //        //else
            //        //    throw new SecurityTokenInvalidIssuerException("Invalid issuer");
            //    },
            //NameClaimType = "name",
        },
        Notifications = new OpenIdConnectAuthenticationNotifications()
        {
            AuthorizationCodeReceived = OnAuthorizationCodeReceived,
            AuthenticationFailed = OnAuthenticationFailed,
        }
    });

看起来https://login.microsoftonline.com/common/v2.0将默认使用。所以你可以将值更改为https://login.microsoftonline.com/{your_tenant}/v2.0


Update:

您可以创建一个新的 vb Web 项目,并选择使用 Azure AD 单租户身份验证。

然后你会得到一个可行的样本:

Partial Public Class Startup
    Private Shared clientId As String = ConfigurationManager.AppSettings("ida:ClientId")
    Private Shared aadInstance As String = EnsureTrailingSlash(ConfigurationManager.AppSettings("ida:AADInstance"))
    Private Shared tenantId As String = ConfigurationManager.AppSettings("ida:TenantId")
    Private Shared postLogoutRedirectUri As String = ConfigurationManager.AppSettings("ida:PostLogoutRedirectUri")
    Private Shared authority As String = aadInstance & tenantId

    Public Sub ConfigureAuth(app As IAppBuilder)
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)

        app.UseCookieAuthentication(New CookieAuthenticationOptions())

        app.UseOpenIdConnectAuthentication(New OpenIdConnectAuthenticationOptions() With {
            .ClientId = clientId,
            .Authority = authority,
            .PostLogoutRedirectUri = postLogoutRedirectUri
        })
    End Sub
*
*
End Class

还支持指定权限。并且可以看到已经设置为aadInstance&tenantId

如果要使用 Azure AD v2,则需要使用 v2.0 终结点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用程序“”未配置为多租户应用程序 的相关文章

  • Python/Flask:应用程序在关闭后正在运行

    我正在开发一个简单的 Flask Web 应用程序 我使用 Eclipse Pydev 当我开发该应用程序时 由于代码更改 我必须经常重新启动该应用程序 这就是问题所在 当我运行该应用程序时 我可以在本地主机上看到该框架 这很好 但是当我想
  • Ruby on Rails(三)隐藏部分视图

    我正在开发 Ruby on Rails 3 Web 应用程序 我有一个名为User有一列名为role 我正在寻找对视图的这些部分具有 错误 角色的用户隐藏视图部分的最佳方法 例如我希望所有用户都能够看到用户index页面 但我只想要具有角色
  • 使用 Spring Tool Suite 部署 Spring Web 应用程序

    我是 Java Web 框架的新手 我在 google 上搜索发现 spring 是最流行的框架之一 我尝试安装工具并搜索了在我的Mac上运行spring框架的教程 第 1 步 Tomcat 安装 下列的这个网站 http neilang
  • 在java中设置Process对象的安全性

    有人可以告诉我如何限制通过进程对象访问系统属性吗 如果我通过进程对象运行以下代码 我可以抛出安全异常吗 System getProperty user home 请告诉我如何为流程对象配置证券 在ProcessBuilder类文档中 环境方
  • 如何获取 Web 应用程序中所有 HttpSession 对象的列表?

    假设我有一个正在运行的基于 Java 的 Web 应用程序 其中有 0 个或多个有效值HttpSession与之相关的对象 我想要一种方法来访问当前有效列表HttpSession对象 我想我可以实施一个HttpSessionListener
  • 过多的 OpenID.nonce cookie 会导致“错误请求”

    我已经浏览过链接here https github com IdentityServer IdentityServer3 issues 1407 here https github com IdentityServer IdentitySe
  • 如何在前端使用Hibernate乐观锁版本属性?

    使用实体的版本属性的乐观锁定工作正常并且易于实现
  • 如何获取Azure帐户租户ID?

    我的问题是 是否可以在不使用 powershell 命令的情况下获取 azure Active Directory 租户 id 我找到了这两篇博客 在这个帮助下 我已经能够从 powershell 获取租户 ID 和订阅 ID 这是找回租客
  • 如何在登录名控件中显示用户名

    我有一个母版页 其中包含基于母版页的所有后续页面上显示的登录视图内容 我有一个用户名控件也嵌套在登录视图中 用于在用户登录时显示用户名 母版页中登录视图的代码显示如下 div class loginView div
  • 有没有办法使用 Eclipse 调试 Web 应用程序?

    我正在使用 Eclipse Java IDE 开发 Web 应用程序 我使用 Tomcat 6 作为我的 servlet 容器 可用于 Java 的工具 包括 Eclipse 似乎缺乏 Web 应用程序的调试功能 与 NET 平台的 Vis
  • 如何为 HTML 元素创建鼠标拖动滑块?

    我发现的许多滑块插件要么仅单击以查看下一个图像 要么如果它们确实具有鼠标拖动或触摸拖动功能 则仅允许图像 有谁知道为任何 html 元素编写鼠标拖动滑块的插件或可能的方法 我专门使用 SVG 但将来如果能在 div 元素之间滑动就更好了 H
  • Sencha Touch 和 ExtJS 配置文件适用于一个 Web 项目/虚拟主机中的桌面和移动设备?

    我正在使用 ExtJS 和 Sencha Touch 创建一个具有桌面和移动版本的 Web 应用程序 ExtJS 4 和 Sencha Touch 2 使用 MVC 方法 Sencha Touch 2 合并了不同设备 iPhone 平板电脑
  • 如何从 Google Apps 脚本小工具重定向到另一个网页?

    我正在 Google 协作平台中构建一个网络应用程序 目前 我有两个表单 第一个表单加载电子表格并将其显示为表格 然后当您从表中选择一行时 脚本会使用 GET 请求和一些参数调用另一个 Web 应用程序 如 rowIndex X colum
  • JASIG CAS:单点注销不起作用

    我的单点登录工作得很好 但单点退出不起作用 场景是这样的 打开 webapp1 并重定向到 CAS 登录页面 输入详细信息并登录 打开也使用 CAS 的 webapp2 自动登录 因为用户已经登录 退出 webapp1 尝试打开 webap
  • 在 Microsoft Graph 中查找 Azure AD 架构扩展 AppId

    如果通过 Azure AD Connect 同步自定义属性 则会对 Azure AD 进行架构扩展 并且在 Azure AD 中创建一个关联的应用程序 其中包含DisplayName 租户架构扩展应用程序 不幸的是 这些扩展名都是唯一的 并
  • SimpleSAMLPHP 重定向循环

    我们正在尝试使用自定义 mysql 数据库设置 sso 但它在以下两个请求之间进入无限循环 POST http 192 168 0 15 simplesaml module php core loginuserpass php 设置Cook
  • 简单的带宽/延迟测试来评估用户体验

    我编写基于网络的应用程序 性能显然是一个关键因素 虽然数据库加载和页面渲染时间是我可以控制的 但用户的互联网连接却无法控制 我正在寻找的是一种指示用户拥有何种类型的连接的方法 类似于网站角落里的红绿灯 向用户显示他们与网站的连接类型 从而表
  • AADSTS65001:用户或管理员尚未同意使用 ID 为 的应用程序

    我正在开发一个使用 Microsoft 的 OAuth2 代表用户流程 的 Angular Flask 应用程序 我试图从后端调用 API 但出现异常 这是配置app module ts export function MSALInstan
  • Google App Script如何使用HTML服务加载不同的页面?

    如何以编程方式使用 HTML 服务在 doGet 中加载不同页面 如果不可能 为什么GAS编辑器允许创建不同的HTML页面 如果您根据 URL 中传递的参数加载不同的页面 您可以使用以下命令测试参数 function doGet e if
  • 在 Azure Active Directory (AAD) 中注册微服务以确保安全

    我在服务结构集群中部署了一个服务结构应用程序 无状态和有状态 我正在尝试在应用程序中实现安全性 应用程序使用 Active Directory 身份验证库 ADAL 通过 OAuth 2 0 客户端凭据流从 Azure AD 获取令牌 其中

随机推荐

  • 将更改存储在通过 getClass().getResourceAsStream 读取的 .properties 文件中

    我正在编写一个从 properties 文件读取属性的 java Web 应用程序 由于我不知道 properties 文件的绝对路径 因为它取决于应用程序将来运行的环境 所以我必须使用 getClass getResourceAsStre
  • Java 签名的小程序证书仅在 mac OSX10.7 (Lion) 上被吊销

    我有一个签名的小程序 可以在 Windows Mac security Loading certificates from Deployment session certificate store security Loaded certi
  • Jasmine/PhantomJs 规格运行程序

    我无法使用 phantomJs 运行测试 吞咽任务 var jasminePhantomJs require gulp jasmine2 phantomjs gulp task test function return gulp src S
  • 从流中获取文本阅读器?

    我正在尝试读取嵌入的文本文件System Reflection Assembly GetExecutingAssembly GetManifestResourceStream resource 但它给了我一个Stream 嵌入的资源是一个文
  • 如何在 Bash 脚本中回答“是”

    有一个快速的问题 想象一下我有这样的代码 mkdir p INSTALLDIR sudo apt get install y git clojure leiningen git clone git github com maltoe sto
  • 指令级并行性探索

    我只是想知道是否有任何有用的工具可以让我在某些算法中利用指令级并行性 更具体地说 我有一个子集 来自多媒体领域的算法 我想知道利用 ILP 的最佳方法是什么 在这个算法中 所有这些算法都是用 C 语言实现的 所以理想情况下 我将这些算法作为
  • Scala 将字符串转换为映射

    转换这个最快的方法是什么 a ab b cd c cd d de e ef f fg 进入 scala 中的可变映射 我从 500MB 文件中读取了这个输入字符串 这就是我关心速度的原因 如果您的 JSON 像您的示例一样简单 即一系列键
  • 将参数传递给 Scala 对象

    是否可以从外部对象初始化 Scala 对象 我尝试初始化的 Scala 对象没有任何 Companion 类 这是一个例子 object ObjectA val mongoDBConnectionURI This is the Val th
  • python 视频捕获循环

    我编写了一个简单的脚本来连续从网络摄像头捕获快照 我唯一的问题是视频捕获模块并不总是捕获图像 这反过来又导致程序崩溃 我认为我可以通过使用无限循环来解决这个问题 但我不确定如何解决 这是脚本 from VideoCapture import
  • 文件转换任务无法转换压缩包上的 XML 配置

    我正在开发发布管道 它将对应用程序服务工作线程配置执行转换 然后发布工作线程 Web 应用程序 我的输入包是由 MsBuild 发布 来自 ASP NET 构建管道 生成的 zip 包 PackageTmp app data jobs tr
  • Rails - 查找或创建 - 有查找或构建吗?

    我目前正在使用 XXX find or create by uuid XXXX 有没有办法进行查找或构建 Try XXX find or initialize by uuid XXXX
  • TypeScript 中的无渲染 Vue 组件

    我有一个 JavaScript 中的无渲染组件 我正在尝试将其转换为 TypeScript 我在声明时遇到错误render函数在一个Vue extend ed 组件 method ComponentOptions
  • 在 Python 中删除 root 权限

    我想让一个Python程序开始侦听端口80 但之后执行时无需root权限 有没有办法放弃 root 或在没有 root 的情况下获取端口 80 如果没有 root 权限 您将无法在端口 80 上打开服务器 这是对操作系统级别的限制 因此 唯
  • 如何在 C++ 中强制包含静态库中的静态对象 (MSVC 11)

    我试图在 C 文件中初始化一个静态对象 该文件试图在其构造函数中将类自动注册到工厂 就像任何标准自动注册问题一样 问题是 它被编译为静态库 并且在链接到可执行文件时被优化掉 应该有一个非常简单的解决方案 但令人惊讶的是 看起来并不那么简单
  • 如何在 Echo Alexa 卡片中显示超链接

    如何在 Echo Alexa 卡中显示超链接 即与 Echo 通话后在 Alexa 应用程序中显示的卡 我知道它包含在 lambda 函数返回的响应中 但找不到除https developer amazon com public solut
  • 如何重置 table.DefaultView.RowFilter?

    下面的代码工作正常并正确过滤行 但是我如何将表恢复到原始状态 DataTable table this dataGridView1 DataSource as DataTable table DefaultView RowFilter co
  • 性能:Matlab 与 Python

    我最近从Matlab to Python 在转换我的一个冗长代码时 我惊讶地发现Python非常慢 我分析并追踪了一个函数占用时间的问题 该函数是从我的代码中的各个位置调用的 作为递归调用的其他函数的一部分 探查器建议300两个地方都调用了
  • 生成 PHP 代码(从解析器令牌)

    是否有任何可用的解决方案用于 重新 生成 PHP 代码解析器令牌 http www php net manual en tokens php由返回token get all http www php net manual en functi
  • 我应该声明变量尽可能接近它们将使用的范围吗?

    锐锐通常会建议我这样做 而我仍在寻找这样做的充分理由 我想到的唯一一件事是 声明它更接近它将使用的范围 可以避免在某些不必要的情况下初始化它 因为条件等 与此相关的事情如下 int temp foreach var x in collect
  • 应用程序“”未配置为多租户应用程序

    我正在尝试开发单租户应用程序 但登录时收到以下错误消息 应用程序 应用程序 ID 未配置为多租户应用程序 2018 年 10 月 15 日 之后创建的此类应用程序不支持使用 common 端点 使用特定于租户的端点或配置应用程序成为多租户