- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们在 AngularJS 中开发了前端,在 NodeJs 中开发了后端 API。我们使用 Azure AD 进行身份验证。前端 Angular 正在使用 adal-angular用于 Azure 身份验证的 JavaScript 库。因此,当用户访问网站时,他会被重定向到 https://login.microsoftonline.com成功验证后,他将被重定向回我们的网站。到目前为止一切顺利。
我必须使用 passport-azure-ad 来保护后端 api图书馆。只有前端在调用这些 API。使用此库有两种策略可用
1> OAuth2Bearer策略
2> Open ID Connect 的 OIDCStrategy
我的印象是 Azure AD 默认使用 OpenID Connect 进行身份验证。所以我打算使用 OIDCStrategy 来保护 Node web api 作为 discussed here
但是在 fiddler 中,我看到以下请求客户端(即角度前端)在调用 Web API 时发出
GET http://localhost:4030/api/getemployees HTTP/1.1
Host: localhost:4030
Connection: keep-alive
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOi………………………
Referer: http://localhost:4030/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
注意授权标记以 “Bearer“ 开头,所以我假设客户端正在向服务器发送 Bearer token 。
问
1>我应该在这里使用哪种策略?
2>我们什么时候应该使用一个而不是另一个?
最佳答案
我维护 passport-azure-ad
。这里的区别在于“授权”和“认证”。
OAuth2 用于授权(我可以访问它吗?)。
OpenID Connect 用于身份验证(这就是我)。
当您连接到 Web API 时,用户很可能已经拥有身份(他们已经通过身份验证),现在您只想确保用户可以访问 API( 授权)。 OAuth2 用于保护资源并使用来自 IdP 的 token 以确保 token 有效并且用户有权访问该资源。 Bearer 只是我们(和行业)用于 OAuth2 的 token 类型。如果有人根本没有 token 就来找您,您会拒绝他们,然后由调用您的客户知道将他们带到哪里以获得您需要的正确 token 。
OpenID Connect 建立在 OAuth2 之上,纯粹是为了让人们登录并获取您最终将发送到 Web API 的 token (这将反过来使用 OAuth2 和 Bearer token )。所以 OpenID Connect 用于身份验证。
在您的场景中,您使用的是为您执行 OpenID Connect 身份验证的 Angular,因此您的 Web API 应该使用 Bearer 策略。
我在这里编写了一个示例来引导您完成所有这些:https://azure.microsoft.com/en-us/documentation/articles/active-directory-devquickstarts-webapi-nodejs/它使用 MEAN 堆栈,并使用我编写的 iOS 示例应用程序作为前端。使用这两个,很容易看出一个如何充当身份验证部分(iOS 应用程序),另一个如何作为授权部分(node.js 应用程序)坐在那里并保护 API
node.js 应用代码:https://github.com/Azure-Samples/active-directory-node-webapi
iOS 应用代码:https://github.com/Azure-Samples/active-directory-ios
要深入了解这些主题,请访问此处:https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/
如果您有任何其他问题,请告诉我!
关于node.js - 护照天蓝色广告 : which strategy to use,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36653812/
我有以下两个问题,我尝试用谷歌搜索这些问题,但没有找到任何运气。请帮助我。 我已将 AdMob 广告集成到我的 iPhone 应用程序中。当点击admob View 时,safari会被打开,如果加载
我用简单的代码在我的网站上使用了自动点击代码并且它起作用了。下面是我之前使用的代码。 $(document).ready(function(){ var list = document.getEle
我需要将自定义 BLE 广告数据从 ios/android 设备广播到许多自定义 BLE 设备。我的目标是设置 ble adv 包的字节以将其广播到附近的 ble 设备。 据我所知,我需要设置我的 i
我想从动态内容的广告意义上展示广告,即调用 API 并发送一些关键字来获取广告,这可能吗? 例如: Adsense.GetAdsForKeywords("car, subaru, auckland")
一位客户要求我使用他的 Google 发布商 ID 和广告 ID 创建他的广告。 他告诉我在博客上创建这个。 我现在的问题是我不知道他到底是什么意思,因为我习惯的是复制代码并粘贴它。 那么,有人可以向
经过大量搜索,我找不到任何支持以非常小的尺寸(40*40 平方或更少像素)展示广告的广告网络。 我看到应用程序可以这样做(就像左上角的高清摄像头 [附图片])。点击此广告后,它会直接进入 google
我有一个博客,上面有一些赞助帖子。 如果用户访问链接到赞助商的帖子,我希望在其他网站(使用 AdSense)上为最近访问过我网站的访问者显示与该赞助商相关的 AdSense 广告。 这是否可以使用动态
我正在开发一个网站,我想在其中展示 Google 广告。如何在我的网站上测试广告?此外: Google 允许我测试广告吗? 它是否认为我的测试是假印象? 我会被 Adsense 屏蔽吗? 这是网站链接
我在尝试显示来自 Admob 的实时广告时遇到问题。测试广告工作正常,但当我切换到实时广告时,我不断收到此错误 Unable to get provider com.google.android.g
我已经集成了 https://pub.dev/packages/firebase_admob进入我的应用程序并实现 rewarded ads .我现在的问题是我想通过这个插件使用中介。唯一的事情是我知
有关背景信息,请参阅:this question 因此,授权流程的第一步是使用 Web 浏览器中的 URL 获取授权 token ,如下所示。对于桌面应用程序,它需要具有以下签名(我对其进行了未编码以
大约一周前(9 月 13 日)Facebook 推出了新的后置链接格式(看起来更像照片后置 - 大图等)。但是,当我通过 API 上传帖子时(效果很好),尽管 Facebook 界面(直接 Faceb
我有来自 webhook 调用的以下 JSOn 响应 { "responseId": "d5c70d8b-e8ad-41df-bb3b-26b0e51d60ca-a14fa99c", "que
我想在内容前面放置一个 Logo /广告,有很多方法可以做到,但问题是它们使用 JS 显示/隐藏方法。发生的情况是,当用户观看 Logo /广告时,内容不会加载,这会导致用户首先等待 Logo /广告
我一直在按照本教程 ( http://www.kilobolt.com/day-7-creating-an-android-game-from-start-to-finish.html ) 创建 An
我有一个包含 dfp 广告的单页网络应用程序。我有两个我正在触发的 dfp adunits,它们位于内容之间,内容是特定类别的文章列表。 当我点击另一个类别时,它只会加载不同类别的文章(不会更改地址栏
我通过 Facebook 的 Power Editor 上传了 212 封电子邮件的 csv,几秒钟后我可以看到观众中有 200 位用户。 我通过 Facebook 的 Power Editor 将相
我的移动应用程序中有一个 AdMob banndr 广告。大多数时候它不会出现。这是它的工作方式,还是我在设置时做错了什么?泰德 最佳答案 如果没有要显示的广告,则不会返回广告。如果您在 admob
我最近让 admob 广告正常工作,我通过以下方式对其进行了测试: AdRequest adRequest = new AdRequest.Builder()
我正在尝试将 Admob 横幅对齐到设备屏幕的右侧。但是它对我不起作用。我正在创建这样的横幅 RelativeLayout layout = new RelativeLayout(activity
我是一名优秀的程序员,十分优秀!