首页 文章

MVC控制器中的承载令牌以访问Web API

提问于
浏览
1

我有两个项目:MVC,Web Api

在Web API项目中,我使用的是承载令牌身份验证 . 此令牌在24小时后到期 . 在我的MVC项目中,我想通过MVC控制器(服务器到服务器)调用Web api项目 . 什么是最好的方式:

  • 获取令牌

  • 24小时后续订令牌(或任何到期时间)

  • 调用安全行动方法

我的想法是使用WebClient,但我不确定是否有更好的方法来解决这个问题 .

我也没有开始使用持票令牌 . 但需要一种可靠的方法来验证服务器到服务器和客户端(angularjs)到服务器(api) .

1 回答

  • 1

    服务器到服务器的OAuth流程:

    • 您的Web服务器使用共享密钥连接到您的授权服务器(AS,包含在Web API主机中,在本例中)

    • AS(Web API)将令牌返回给您的Web服务器

    • Web服务器存储令牌以在下一个Web API调用中使用它

    对于客户端到服务器,流程不同:

    • 当用户使用您的Web应用程序并且需要访问Web API时,您的应用程序会将浏览器重定向到auth服务器,在该服务器上,它会通知用户哪些资源(Scopes)正在尝试访问该应用程序,并要求批准 . 此重定向包括url回调

    • 如果用户批准访问,AS会将浏览器重定向到回调URL,其中包含查询字符串中的一些信息,其中包含一个令牌

    • 浏览器检查网址,如果用户批准了访问权限,则会使用网址中的令牌向Auth服务器询问是否有承载令牌

    • 如果's an SPA, the browser stores the bearer token and uses it to access the Web API. If it'不是SPA,则令牌通常存储在cookie中,因此它不会丢失

    处理令牌过期:

    令牌具有关于到期时间的信息,并且通常包括刷新令牌 . 您可以使用刷新令牌在AS到期之前将其呈现给AS,这样您就不需要请求新令牌

    关于配置的注意事项

    必须在服务器中以不同的方式配置不同的流 .

    “服务器到服务器”的第一个流使用共享密钥直接将berare令牌返回给服务器应用程序 . 在这种情况下,不需要用户批准,因为此过程中没有用户参与

    从(不可信)客户端到服务器的第二个流程需要用户的授权,因为您的客户端应用程序将代表他访问用户(资源所有者)的某些资源,因此需要他的批准 .

    还有其他流程,例如可信客户端,但它们不适用于这种情况 .

    所有这些事情的典型实现是dotnetopenauth . 它有很好的文档记录,它可以为您处理所有细节 .

相关问题