Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无需在Azure上托管Web的Xamarin.Forms Azure移动应用服务脱机同步

无需在Azure上托管Web的Xamarin.Forms Azure移动应用服务脱机同步
EN

Stack Overflow用户
提问于 2018-01-18 20:06:41
回答 1查看 440关注 0票数 2

目前,我有一个应用程序,它使用Azure移动应用程序服务来管理离线同步和身份验证。身份验证是通过Azure Active Directory完成的,我设置它的方式是将web api发布为azure上的应用程序服务,并在Active Directory部分中将其配置为应用程序。在Xamarin.Forms中完成的原生应用程序也在azure中进行了配置,以便无论何时应用程序发出请求,它都可以正确地使用应用程序编程接口进行身份验证。

我现在要做的是将此web api放入一个本地服务器中。我必须这样做,以便优化在检索数据时遇到的一些延迟问题。我的问题是,我如何在使用Azure Active Directory作为我的身份验证器的同时,将离线同步功能与内部服务器中的api一起使用。

我遇到的主要问题是实现的身份验证部分。

我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-01-19 09:17:17

根据您的描述,您正在使用Authentication and authorization in Azure App Service进行内置身份验证,而无需更改应用程序后台的代码。Authentication / Authorization for Azure App Service (Easy Auth)是作为一个运行在Azure端的原生IIS模块实现的,详细信息你可以关注Architecture of Azure App Service Authentication / Authorization

我的问题是,我如何在使用Azure Active Directory作为我的身份验证器的同时,将离线同步功能与内部部署服务器中的api一起使用。

AFAIK,我们无法安装本地IIS模块easyauth.dll。根据您的场景,您需要做一些额外的工作来实现您的目标。

对于.NET后端,您可以使用JWT中间件来验证令牌( Microsoft.Azure.Mobile.Server.Authentication authenticationToken)。注意:这个中间件用于本地开发和调试您这边的移动应用程序.net服务器。

适用于Client-managed authentication流的

你需要在你的应用后台添加一个额外的端点,用于接收AAD返回给客户端用户的access_token,然后你的应用后台将使用访问令牌来访问已登录的用户端点(例如https://graph.windows.net/me?api-version=1.6)来检索用户的基本信息,然后将用户信息编码为JWT令牌并返回给您的客户端。下面是一个生成JWT令牌的示例,您可以参考it

注意:应用程序服务内置身份验证还将为移动客户端生成authenticationToken。对于此方法,您将手动检索登录的用户信息,并通过yourself.

你需要提供登录端点并将用户重定向到AD授权端点,然后你的应用后端接收authorization_code并检索access_token,然后通过access_token访问已登录的用户信息,然后将用户声明编码到JWT authenticationToken并将令牌(例如https://{your-domain}/.auth/login/done#token={the-json-string-of-LoginResult})重定向到客户端用户。

注意:以上两种方法用于在您的本地服务器中实现Easy Auth中的一些类似功能。

此外,您可以只使用用于AAD v1.0端点的中间件UseWindowsAzureActiveDirectoryBearerAuthentication或用于AAD v2.0端点的UseOAuthBearerAuthentication来投影您的web,而不是Microsoft.Azure.Mobile.Server.Authentication提供的身份验证中间件。以下是一些教程,您可以按照它们进行操作:

Azure AD .NET Web API getting started

Secure an MVC web API with AAD v2.0 endpoint

对于这种方法,您的移动客户端可以利用ADAL或MSAL客户端库来获取令牌。然后,在实现MobileServiceClient实例时,您可以指定一个自定义DelegatingHandler,用于将带有该值的authorization header添加到您作为Web API后端的持有者令牌获取的访问令牌中。详细信息您可以按照Working with the client SDK下的How to: Customize request headers部分进行操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48329493

复制
相关文章
(33)if、case语句
②[ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格
生信real
2020/09/10
1.2K0
(7)case语句[通俗易懂]
总结:把安装php的各种版本一个文件,文件里面是函数安装php各种版本的函数,然后在入口文件使用. /server/scripts/php.sh加载这个文件,在定义函数调用文件中的函数功能即可
全栈程序员站长
2022/09/20
9690
(7)case语句[通俗易懂]
使用case语句编写系统服务脚本
case语句可以很好的代替if语句中的多分支结构,使用case分支语句时,有几个值得注意的特点如下所述:
小手冰凉
2019/09/10
1.1K0
使用case语句编写系统服务脚本
SystemVerilog-决策语句-case语句
经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。
碎碎思
2022/11/14
3.6K0
SystemVerilog-决策语句-case语句
CASE语句与CASE表达式
case语句与case表达式是plsql流程控制的重要组成部分,尽管其使用方法较为简单,但容易混淆。本文将描述case语句与case表达式并给出演示以便于更好理解两者的异同及使用时的注意事项。 一、简单case语句
Leshami
2018/08/14
1.3K0
Java switch case语句
swith 语句主要用于判断一个变量与一系列值中某个值是否相等,每一个值称为一个分支。基本格式如下:
算法与编程之美
2022/10/28
1.4K0
Java switch case语句
mysql 分组统计 case when 及 if 语句使用
需求: 同时:中文名重复了就是1部剧,不重复就是多部剧 需求分析: 这个需要分组、需要统计、需要判断、需要distinct。 分组:根据地区、类别、中文名称分类; 判断:根据类型进行判断同时要求和 因为中文名称重复的就是1部,所以统计的时候,要使用到distinct去重。 表语句: DROP TABLE IF EXISTS `yj_item_plan`; CREATE TABLE `yj_item_plan` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,  
凯哥Java
2022/12/16
2.5K0
mysql 分组统计 case when 及 if 语句使用
java switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
taoli
2022/09/30
1.4K0
java switch case 语句
如何用ORM支持SQL语句的CASE WHEN?
OQL如何支持CASE WHEN? 今天,一个朋友问我,OQL可否支持CASE WHEN语句?他给的示例SQL如下: select HName,case when IsEnable=1 then '启用' else '停用' from tb_User OQL是SOD框架的ORM查询语言,它类似Linq,但是它诞生的历史比Linq早,并且更加接近SQL语法。所以,对SOD框架而言,对应ORM如何支持CASE WHEN,就等于是问OQL如何支持CASE WHEN了。 这个问题已经不止这一个朋友来问我了,我想了下
用户1177503
2018/02/26
2.1K0
Mysql的 If和 Case语句
比如在上例子中,我们存储了一些不希望暴露性别的用户,存储的值为3.此时想要查询可以:
呼延十
2019/06/26
3.4K0
Mysql的 If和 Case语句
mysql数据库中 case when语句使用
在mysql数据库中,有时候我们会使用到类似if else的判断操作。那么mysql中怎么处理这种需求呢?
凯哥Java
2019/07/01
2.9K0
mysql数据库中 case when语句使用
在mysql数据库中,有时候我们会使用到类似if else的判断操作。那么mysql中怎么处理这种需求呢?
凯哥Java
2022/12/15
2.1K0
mysql数据库中 case when语句使用
JavaScript switch case语句详解
switch 语句专门用来设计多分支条件结构。与 else/if 多分支结构相比,switch 结构更简洁,执行效率更高。 语法格式
用户3519280
2023/07/07
4760
JavaScript switch case语句详解
Case When ELSE END语句
一、简介、Case  When   ELSE   END共有两种用法:  说实话,这种就是数据库版的switch语句,但是只是形式上很像,实际上还是有差别的!!! Create Table Test6
郑小超.
2018/01/26
2.4K0
带case操作的update语句_多个case when嵌套
1、场景:由于多次循环执行数据库操作是非常耗费性能的。因此,我们需要尽可能一条UPDATE语句更新多条数据。
全栈程序员站长
2022/10/04
2.7K0
流程控制-case语句
在生产环境中,我们总会遇到一个问题需要根据不同的状况来执行不同的预案,那么我们要处理这样的问题就要首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案。
星哥玩云
2022/09/08
6380
order by case when执行优先级_sql case语句
select * from table where 条件1 AND 条件2 OR 条件3
全栈程序员站长
2022/10/02
1.4K0
Mysql中的条件语句if、case
Mysql中的条件语句在我们对数据进行转换的时候比较有用,这样就不需要创建中转表。
大江小浪
2018/07/24
6.5K0
判断结构select...case语句
对于多选一的情况时,使用select...case语句可以让代码更简单、易读。下面我们就先介绍基础知识,然后结合示例来学习select...case语句。
无言之月
2019/10/13
3.9K0
点击加载更多

相似问题

如何使用多个case语句更新多个null值

13

使用CASE语句更新多行

34

无法使用case语句更新

11

使用case语句进行更新

25

使用case语句更新字段

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文