authentication - Azure移动应用程序刷新服务器上的 token

标签 authentication xamarin.forms azure-web-app-service azure-mobile-services

背景如下:

  • 需要通过 google/facebook/msa 进行身份验证
  • 需要将我们自己的声明添加到 MobileServiceAuthenticationToken用于客户端
  • 想要拥有刷新 token 功能(我知道 FB 没有)

我有这个工作 LoginAsync并得到 MobileServiceAuthenticationToken后退。然后我调用一个自定义身份验证 Controller ,它有 [Authorize]属性。

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

使用LoginAsync所有这一切都使所有调用的代币保持流动,这很棒。

因此, token 过期,我调用 RefreshUserAsync在客户端上。此时MobileServiceAuthenticationToken带有我们的自定义声明的内容将替换为来自 MobileAppService 的默认声明(不含我们的声明)。我希望如此。

所以现在我必须再次调用自定义身份验证 Controller 才能将我们的声明添加回身份 token 。

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

我正在寻找的是在服务器端刷新身份提供者访问 token ,并以相同的方法,用我们的东西更新身份 token 。

我知道 /.auth/refresh从客户端调用作为 RefreshUserAsync 的替代方案。我可以从后端的 Controller 进行类似的调用,而无需设置整个System.Net.Http.HttpClient事物?

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

类似的事情?

提前致谢。

最佳答案

简短版本 - 否。

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

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

关于authentication - Azure移动应用程序刷新服务器上的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38907641/

相关文章:

Asp.Net:如何允许内网用户访问页面并拒绝外网用户访问页面?

java - Java 程序的 wso2 权利

c# - 相对布局上的背景图像无法获取表单上的屏幕尺寸

azure - 更换azure网站失败

PHP 摘要 HTTP 身份验证示例不起作用,为什么?

events - 在 symfony2 登录成功之后和重定向之前做些什么?

SQLite.net 数据库与 Xamarin.Forms 应用程序

mvvm - Xamarin.Forms:是否可以在没有 ViewModel 调用 VIew 的情况下将行动态添加到网格中?

azure - 从 Azure CLI 访问 Azure 应用服务文件

wcf - 如何允许我的 Azure 网站访问我的 Azure 云服务