AJAX在MVC和Identity Server中调用

时间:2015-05-08 15:22:47

标签: ajax thinktecture-ident-server identityserver3

我一直在玩Thinktecture IdentityServer3,我很想使用它,因为产品看起来很棒。但是,我并不完全了解如何完成我的流程,这可能相当普遍:

  • 使用隐式流创建Identity Server
  • 设置MVC网站
  • 设置单独的Web API

到目前为止一切顺利,如网站上的示例所示。我现在希望直接使用AJAX调用调用API,但为此我需要一个访问令牌。看起来像是一个很大的开销,必须通过MVC站点本身(再次,在示例中)。

如何完成此流程?它本质上是混合MVC和Javascript客户端样本还是更流畅的方式,因此用户只需登录一次?也许在隐藏字段中发送访问令牌,但是如何更新?

任何理解这一点的帮助都会很棒。

2 个答案:

答案 0 :(得分:2)

我设法提出了一个似乎有用的解决方案,但不确定它是否是最好的做法...

  • 在AJAX / AccessToken
  • 上的MVC站点上公开方法
  • 应使用Authorize属性锁定方法,以确保站点的MVC部分正确使用IdentityServer进行身份验证
  • Method返回通过MVC控制器
  • 通过上述调用生成的用户访问令牌
  • 在JavaScript中,只需使用此端点获取访问令牌,然后手动调用API
  • 获取访问令牌的调用应该是安全的,因为它在与MVC站点本身相同的域/身份验证模型中

我在这里为所有感兴趣的人提出了样本: OIDC-Website

答案 1 :(得分:1)

查看form post client以查看明确调用的端点。您需要点击token endpoint以获取访问令牌。

您应该能够在AJAX调用中使用这些端点,将收到的声明和令牌存储在cookie中并从那里获取。

请注意,要续订访问令牌,您还需要存储刷新令牌。刷新令牌的隐式流does not allow(您需要使用授权码流或混合流)。