Authentication Azure移动应用刷新服务器上的令牌

Authentication Azure移动应用刷新服务器上的令牌,authentication,xamarin.forms,azure-web-app-service,azure-mobile-services,Authentication,Xamarin.forms,Azure Web App Service,Azure Mobile Services,背景如下: 需要通过google/facebook/msa认证 需要将我们自己的声明添加到MobileServiceAuthenticationToken,以便在客户端上使用 想拥有刷新令牌功能(我知道FB没有) 我通过LoginAsync和获得MobileServiceAuthenticationToken来实现这一点。然后我调用一个自定义的auth控制器,它有一个[Authorize]属性 自定义身份验证控制器从主体复制一些声明,然后将我们的声明添加到这些声明中,并创建一个新的令牌,并将

背景如下:

  • 需要通过google/facebook/msa认证
  • 需要将我们自己的声明添加到
    MobileServiceAuthenticationToken
    ,以便在客户端上使用
  • 想拥有刷新令牌功能(我知道FB没有)
我通过
LoginAsync
和获得
MobileServiceAuthenticationToken
来实现这一点。然后我调用一个自定义的auth控制器,它有一个
[Authorize]
属性

自定义身份验证控制器从主体复制一些声明,然后将我们的声明添加到这些声明中,并创建一个新的令牌,并将其返回给客户端

所有这些都使用
LoginAsync
,可以让令牌在所有调用中流动,这很好

因此,令牌过期,我在客户机上调用
RefreshUserAsync
。此时,带有自定义声明的
MobileServiceAuthenticationToken
将替换为不带声明的MobileAppService的默认标记。我希望如此

因此,现在我必须再次调用自定义身份验证控制器,以将我们的声明添加回标识令牌

这是可行的,但感觉很笨拙。两次往返

我想要的是刷新服务器端的身份提供者访问令牌,并用同样的方法用我们的东西更新身份令牌

我知道客户端的
/.auth/refresh
调用是
RefreshUserAsync
的替代方法。有没有类似的调用,我可以在后端从我的控制器进行,而不必设置整个
System.Net.Http.HttpClient
东西

例如:我在后端使用
this.User.GetAppServiceIdentityAsync(this.Request)
来获取身份提供者信息,而无需进行HTTP调用

像这样的

提前感谢。

短版-否

更长的版本-您需要代表用户在后端调用/.auth/refresh,然后添加声明。/.auth端点位于后端无权访问的其他服务上,除非通过Http


GetAppServiceIdentityAsync()
方法仍然执行HttpClient调用,因此您不会节省往返时间。

因为我不知道幕后发生了什么,这可能是一个愚蠢的假设。。。但是我是否需要对后端生成的调用
/.auth/refresh
返回的响应执行任何操作?是否有我看不到的内部更新?因为我刚刚从这个.Request中复制了所有的头文件到我的后端HttpClient,并进行了调用,它似乎正在工作。看起来太简单了:)。实际上,我每次都会得到新的访问令牌,它们最终会出现在凭据中。完美的谢谢你,阿德里安!/.auth/refresh端点返回一个新的访问令牌。然后对访问令牌进行解码,向其添加您自己的声明,重新签名并以相同的格式返回给用户。