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端点返回一个新的访问令牌。然后对访问令牌进行解码,向其添加您自己的声明,重新签名并以相同的格式返回给用户。