OAuth隐式授予-无法获取包含访问令牌的URL片段

时间:2019-04-01 21:02:52

标签: url oauth oauth-2.0 xmlhttprequest amazon-cognito

我正在尝试使用AWS Cognito实现隐式授予OAuth流。特别是,在已经登录我的网站之后,我试图向Cognito的AUTHORIZATION端点发出GET请求;该请求的响应会将我重定向到我选择的URL(我们将其称为回调URL),并在片段中提供所需的访问令牌。

如果我通过在浏览器的地址栏中输入AUTHORIZATION终结点的适当URL发出此请求,则一切都会按预期进行:浏览器被重定向到回调URL,并且访问令牌出现在该URL的片段中。 / p>

但是,如果我使用XMLHttpRequest从网站中的脚本异步发出相同的请求,我将无法访问回调URL中返回的片段(Chrome的“网络”标签显示,实际上是返回了包含令牌的片段,就像上述地址栏中的情况一样)。如何访问此片段?

我的代码如下:

AllOurInfo.TheData = EvaluateData(dData);
public ParentDataClass EvaluateData(dynamic dData)
{
    // Figure out the type of data, call the right class
    return new ChildDataClass()
}

struct AllOurInfo<T> {
    public T TheData {get;set;}  // or whatever class T is rather
    public string[] Errors {get;set;}
}

1 个答案:

答案 0 :(得分:0)

该片段是客户端站点的内容,仅保留在浏览器中。您将需要使用javascript明确将其拉出,请参见https://openid.net/specs/openid-connect-core-1_0.html#FragmentNotes。如果OpenID Connect服务器支持,可以使用response_mode = form_post避免碎片,请参见https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html