【问题标题】:ASP.Net MVC and WebApi authentication using Identity server使用身份服务器的 ASP.Net MVC 和 WebApi 身份验证
【发布时间】:2017-08-15 12:55:23
【问题描述】:

我是身份服务器的新手,并希望使用它来保护我的两个应用程序(MVC、Webapi)。 我已经看到了我们可以从 MVC 操作方法和 SetBearerToken 调用 webapi 的示例,该方法是颁发给 MVC 应用程序的。我指的是以下示例:

https://identityserver.github.io/Documentation/docsv2/overview/mvcGettingStarted.html

这是服务器到服务器通信的典型示例,我们使用颁发给 Web api 的 MVC 应用程序的访问令牌。

在同一场景中,我想使用相同的访问令牌从 Javascript 客户端(来自 Angular 或任何一个)调用 webapi。

“我想将颁发给 MVC 应用程序的访问令牌传递给 JavaScript 调用 WebAPI”

如何使用从 JavaScript 客户端发给我的 MVC 应用程序的令牌?

谢谢

【问题讨论】:

    标签: claims-based-identity identityserver3


    【解决方案1】:

    在我看来,他们应该被视为不同的客户,我猜他们是不同的网站?对于您的 Javascript 客户端,您应该能够找到示例 here ,您可以使用示例中提供的 javascript 库或自己编写一个

    一旦您获得令牌,您就可以使用 AJAX 调用您的 API,如果您的 webapi 在不同的域上,您可能会遇到 CORS 问题,嗯……这是不同的主题。

    希望有帮助

    【讨论】:

    • 那么,应用程序流程如何: 1:用户将使用 UseOpenIdConnect 登录 webapp 2. 身份服务器将打开登录页面,对用户进行身份验证并将令牌存储在 cookie 中 3. 现在,如果我们要访问 web api 我们将再次从身份服务器获取访问令牌 4. 在 header(bearer token) 中传递令牌以访问 web api 你怎么看?
    • 嗨,抱歉,对于 3) 的延迟依赖,如果您想在 webapp 的服务器端调用 API,您可以从 ClaimsPrincipal 获取它,因为访问令牌应该是一个声明,一个示例可以可以在这里找到:github.com/IdentityServer/IdentityServer3.Samples/blob/master/…
    • 是的,你是对的。我们可以很容易地从 ClaimPrincipal 获取服务器端的访问令牌。但是,我的要求不同。我不想通过服务器访问 Web Api,我想直接从任何 JS 客户端(如 AngularJS 或其他东西)访问它。所以请记住这一点,你会建议什么?
    • 更具体地说,一旦我从我的 MVC 应用程序获得身份验证,我想访问我的 Web Api 但不通过 MVC 应用程序路由(直接来自 JS 客户端)
    • 对不起,我想我现在已经更好地理解了你的问题——你的 JS 客户端实际上在你的 MVC 页面上。您是否有任何理由不想将服务器调用到您的 webapi 中?在服务器端调用不是更安全吗?你希望你的 web api 受到保护吗?或者如果您真的希望能够从 JS 客户端调用,也许考虑在您的 MVC 应用程序中创建一个端点,该端点调用 webapi 并本身暴露给 JS 客户端?
    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 2016-06-17
    • 2016-06-10
    • 2014-08-27
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    相关资源
    最近更新 更多