如何通过Chrome扩展程序针对MVC Core应用进行身份验证?

时间:2019-03-06 20:30:52

标签: asp.net-mvc google-chrome-extension

在我的扩展程序清单中,我有:

"permissions": [
    "cookies",
    "https://localhost:5001/"
]

在我的Startup.cs ConfigureServices方法中,我有:

services.AddCors(options =>
{
    options.AddPolicy(MyAllowSpecificOrigins,
    builder =>
    {
        builder.WithOrigins("https://localhost:5001/",
                            "chrome-extension://mdgfojbohoeindggojmfcphhobepgcbk/");
    });
});

在Startup.cs Configure方法中,我有:

app.UseCors(MyAllowSpecificOrigins);

到目前为止,我已经尝试过:

  1. 具有按钮调用window.open('Url_of_signin_page'),然后在用户登录后重定向到原始页面。这将设置auth cookie,并且当我浏览到需要手动进行身份验证的端点时,它会起作用。但是,XMLHttpRequest调用不会发送cookie。
  2. 使用AJAX提取登录表单的HTML,并将其作为div添加到运行扩展程序的当前页面中。这里的问题是MVC表单标签帮助程序忽略了表单操作属性中的主机,并且由于该页面所在的页面不再与应用程序位于同一域中,因此无法正常工作。如果我指定表单操作而不是使用标签帮助程序,则即使我已将@Html.AntiForgeryToken()显式添加到登录表单中,防伪令牌验证也会失败。

最终,我希望用户能够登录MVC Core应用,并使扩展名能够向该MVC Core应用发出经过身份验证的请求。这可能吗?如果可以,怎么办?

编辑以添加:我正在XmlHttpRequest上设置withCredentials = true。

0 个答案:

没有答案