【问题标题】:Get userinfo from ADFS 2016, react, ADAL.js从 ADFS 2016、react、ADAL.js 获取用户信息
【发布时间】:2019-05-18 19:44:13
【问题描述】:

我已经被这个问题困扰了一段时间,我在前端使用 ADAL.js 来处理登录和身份验证。登录后,我需要获取用户的信息(角色、组、名称等),但是除了 401 之外,我无法从 /adfs/userinfo 端点获取任何信息。

到目前为止,我登录用户并取回与访问密钥相同的 id_token 和访问令牌(或浏览器中的“adal.access.token.key{guid}”)。由于前端的 cors 问题,我将其发送到后端 mvc core 2.2 控制器以调用 /adfs/userinfo,这是我得到 401 的地方。下面的 Javascript 代码

this.adalAuthentication.Instance.acquireToken(this.adalAuthentication.Instance.config.clientId, (error, token) => {
                    if (error || !token) {
                        console.log('ADAL Error Occurred: ' + error);
                        return;
                    }
                    axios({
                        method: 'get',
                        url: '/identity/completeLogin/' + token,
                        headers: {
                            'Authorization': 'Bearer ' + token
                        }
                    }).then((response) => { console.log(response.data) });

                });

还有控制器动作...

[HttpGet("completeLogin/{access_token}")]
    public async Task<HttpResponseMessage> CompleteLogin(string access_token)
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth" + access_token);
        var response = await client.GetAsync("https://adfs.server/adfs/userinfo");

        response.EnsureSuccessStatusCode();
        try
        {
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
            return response;
        }
        catch (Exception e)
        {
            throw(e);
        }
    }

此时我很困惑,我想我要么不能为此使用 ADAL,要么可能需要使用 oidcin 而不是 OAuth/jwt,但我不想为了发现而重写很多内容也不起作用,或者有更好/最佳实践的方法。以前有没有人遇到过这个问题和/或可以指出我正确的方向或可以看到我哪里出错了?

我尝试过的其他事情;

  • 点击 adfs/oauth/token 端点(只返回 adfs 服务器错误)
  • 将后端的授权设置为client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer" + access_token);(仅返回无效令牌)。
  • 将前端和后端设为 post 方法并在 ADAL AuthenticationContext 上使用 getCachedToken 方法

编辑:我还打开了this 问题,其目标是获取带有 id 令牌的访问令牌

【问题讨论】:

    标签: reactjs adfs adal.js adfs4.0


    【解决方案1】:

    有一个邮递员示例here

    请注意,“userinfo”仅返回“sub”声明。

    【讨论】:

    • 哦,所以它甚至没有返回我需要为用户设置应用程序的信息,这太疯狂了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多