0

我跟着这个 - http://docs.identityserver.io/en/release/quickstarts/7_javascript_client.html

使用以下配置,我尝试从我的 ReactJS 应用程序登录 Identity Server。登录成功后加载http://localhost:3000/callback.html 。我在 url 中有 id_token 和 access_token 。但是,我确信这个 callback.html 不是我在文件夹结构中的'src\callback.html'。即使我删除了 'src\callback.html' 文件,http://localhost:3000/callback.html#id_token= .......仍然会被加载。我可以知道如何将 redirect_uri 更改为我的 React 应用程序中的视图(例如 Home.js 而不是 html 文件)吗?我希望我应该为此使用路线。请指教。

var config = {
      authority: "http://localhost:5000",
      client_id: "reactSpa",
      redirect_uri: "http://localhost:3000/callback.html", // I want it to be something like 'http://localhost:3000/components/home' (a view not an html)
      response_type: "id_token token",
      scope: "openid profile api1",
      post_logout_redirect_uri: "http://localhost:3000/index.html", // same here
    };

PS:

我需要将 redirect_uri 和 post_logout_redirect_uri 设置为我的 React 应用程序(不是 html 文件)中的任何视图,以便我可以在回调视图中执行以下操作。

new Oidc.UserManager().signinRedirectCallback().then(function () {
            window.location = "index.html"; // should be just 'index'
        }).catch(function (e) {
            console.error(e);
        });
4

2 回答 2

0

首先,您需要RedirectUris 在身份服务器端更改客户端。我不知道您使用哪种存储,但如果您在内存客户端中使用这里是来自官方文档的示例:

var jsClient = new Client
{
    ClientId = "js",
    ClientName = "JavaScript Client",
    ClientUri = "http://identityserver.io",

    AllowedGrantTypes = GrantTypes.Implicit,
    AllowAccessTokensViaBrowser = true,

    RedirectUris =           { "http://localhost:7017/index.html" },
    PostLogoutRedirectUris = { "http://localhost:7017/index.html" },
    AllowedCorsOrigins =     { "http://localhost:7017" },

    AllowedScopes =
    {
        IdentityServerConstants.StandardScopes.OpenId,
        IdentityServerConstants.StandardScopes.Profile,
        IdentityServerConstants.StandardScopes.Email,

        "api1", "api2.read_only"
    }
};

而且您还需要redirect_uri在客户端配置上进行适当的更改(它必须与身份服务器相同)。

于 2018-08-12T19:04:27.507 回答
0

以下评论是答案:

//您是否尝试将身份服务器配置上的 redirect_uri 更改为http://localhost:7017/callback并使用路由配置(如)创建一个回调组件?——阿德姆·卡格林//

在我添加路线后它起作用了。

于 2018-09-20T05:40:52.470 回答