首页 > 解决方案 > 主应用程序包含子应用程序但令牌未通过

问题描述

我有 2 个子应用程序,当我单独运行每个应用程序时,它们被配置为使用身份服务器 v4,并且身份验证流程(隐式)按预期工作。每个应用程序都被重定向到身份服务器登录页面。

现在我有一个容器应用程序,其中包含指向其他应用程序的链接,如下所示:

        <div class="navbar">
        <ul>
            <a href="#/app1">
                <li>
                    App 1
                </li>
            </a>
            <a href="#/app2">
                <li>
                    App 2
                </li>
            </a>
</div>

现在,这个容器应用程序也使用隐式授权类型配置了身份服务器。

当我使用身份服务器登录然后单击以加载其中一个子应用程序时,我在身份服务器中收到以下错误:

用户未通过身份验证。

子应用程序的重定向 URL 看起来正确。

在 chrome 中,以下 URL 失败:

Access to fetch at ' http://localhost:59418/connect/authorize?client_id=alchemylab_singleSpaAccess_implicit&redirect_uri=http%3A%2F%2Flocalhost%3A5001%2Fsignin-oidc&response_type=id_token&scope=openid%20profile&response_mode=form_post&nonce=636867377068725779.MmY2MGU3ZjctOGY5Zi00OWQ3LWFlNmUtMTE2ZmMzY2JlNTNmM2U2ZTc3YTMtOGYxZi00YzQ4LWE0NjYtNzAwMzJlNDhiNDg0&state=CfDJ8Dif9mrvVj9At2AoKjgixXpfcTPQK9drG8hUZ4TTiBoT_XDOsPUg_fO63TfcTlbsknU1q6hYG1acfRToNRdjn8lX56it0XNQ0Y90itWy295U3V5T7w6b-uLvd3RPoOaexJpkQ36wbFWTF93i0Hz5fW0pzlmTv3BccslcoTR__QOu6X9SmPN95INQ1auYVtqTZcEkxrtBYeBSKrSvxVi -y778KcXgXDWmSAjxevSm6upVhzsNDtP4I3vLYjMMdMnoMZ-lDHZB0pEyfFL3JOgH9E8W_0SoWa7Tr8wTLWW47sZ3D75_ab1oZWTcM7vSZPO-WsbKb7ghmhQnpCWaiePidxY&x-client-SKU=ID_NETSTANDARD1_4&x-client-ver=5.2.0.0 ' (redirected from 'http://localhost:5001/api/authDetails ') 来自源“null”已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

虽然显示了 CORS 错误,但在应用程序中设置了 CORS。

如果我尝试直接运行上述 URL,我会看到以下错误:

处理请求时发生未处理的异常。例外:关联失败。位置不明

异常:处理远程登录时遇到错误。Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleRequestAsync()

我尝试将所有应用程序配置为使用授权类型混合,但我看到了相同的错误。

那么,为了让容器应用程序正常工作,我是否需要做更多的事情来确保每个应用程序都与身份服务器一起工作?

我的印象是,一旦主容器应用程序登录,令牌 ID 将被传递给子应用程序,并且新的访问令牌将被发送回子应用程序。

标签: c#reactjsidentityserver4

解决方案


推荐阅读