首页 \ 问答 \ 使用Azure功能的第三方身份验证提供程序(Using a 3rd party auth provider with Azure Functions)

使用Azure功能的第三方身份验证提供程序(Using a 3rd party auth provider with Azure Functions)

所以我之前使用B2C进行身份验证。 我已经配置了我的功能,因此他们需要通过B2C进行身份验证,一切正常。 如果您尝试在未经过身份验证的情况下调用它们,则不会发生任何事情(或者说,您遇到了错误)。

我想使用像Auth0这样的第三方提供商,因为目前B2C存在一些限制和问题,似乎只能非常缓慢地进行。 无论如何,我不确定我应该如何为此配置我的功能。 我转到了身份验证/授权设置刀片,我将“应用服务身份验证”设置为“打开”,“令牌存储”设置为“打开”,“将请求未经过身份验证时采取的操作”设置为“允许匿名”请求(不采取行动)“。 在“身份验证提供程序”下,所有这些都设置为“未配置”。我的第一个问题是,在这个阶段,如果我使用Postman调用我的任何函数,我可以在没有任何身份验证信息的情况下调用它们。它就像如果他们完全没有保护。

我不确定我应该设置什么,以便我的功能需要身份验证但是第三方,而不是5个默认列出的提供商。

或者我是否以错误的方式思考这个问题? 是否允许解决方案允许对我的函数进行未经身份验证的访问,但是在函数本身中执行我的令牌验证/等,而不是依赖于Microsoft在幕后验证请求的任何内容(比如当您使用B2C时)?


So I was previously using B2C for authentication. I had gotten my functions configured so that they required authentication via B2C and everything worked fine. If you tried calling them without being authenticated, nothing happened (or rather, you got an error).

I want to use a 3rd party provider, like Auth0, because there's some limitations and issues with B2C at the moment that seem to only very slowly get worked on. Anyway, I'm not sure how I'm supposed to configure my functions for this. I went to the Authentication/Authorization settings blade and I've set "App Service Authentication" to "on", "Token Store" to "On", and "Action to take when request is not authenticated" is set to "Allow Anonymous requests (no action)". Under "Authentication Providers" all of them are set to "Not Configured'. My first problem is that at this stage, if I call any of my functions using say Postman, I can call them just fine without any authentication information whatsoever. It's as if they're totally unprotected.

I'm not sure what I'm supposed to set so that my functions require authentication BUT with a 3rd party, not with the 5 default listed providers.

Or am I thinking about this the wrong way? Is the solution instead to allow unauthenticated access to my functions, but in the functions themselves do my token validation/etc rather than relying on whatever it is that Microsoft does behind the scenes to validate the request (like when you use B2C)?


原文:https://stackoverflow.com/questions/42235843
更新时间:2020-10-17 18:35

最满意答案

您的最终想法是标记,如果您带来的第三方身份验证提供程序不受App Service身份验证支持,最佳选择是允许未经身份验证的访问并自行验证请求。

但是,请记住,任何输入绑定都将在您的功能代码执行之前运行(并进行身份验证验证),因此您需要小心使用输入绑定和自定义身份验证。


更新 :应用服务身份验证确实在待办事项上“带上您自己的身份验证提供程序”,因此希望很快能够更好地支持此方案。


Your final thought is on the mark, if you're bringing a 3rd party auth provider that is unsupported by App Service Authentication the best choice is to allow unauthenticated access and validate the request yourself.

However, keep in mind that any input bindings will run before your function code executes (and auth validation occurs), so you need to be careful with using input bindings and custom auth.


Update: App service authentication does have 'bring your own auth provider' on the backlog, so hopefully this scenario will be better supported soon.

2017-02-16

相关问答

更多

CodeIgniter认证系统,允许第三方认证?(CodeIgniter Authentication System that allows 3rd party auth?)

就在一个月前,我也在寻找类似的东西,但没有成功。 唯一能够以我看到的简单方式集成的框架就是meteor ,但它不是一个PHP框架。 我必须通过在CI库中包装不同的PHP库来自己做。 源代码位于github上: CI Twitter和Who You Meet (一款实时网络应用程序),其中包含Twitter,LinkedIn和Facebook身份验证,以及大量本地身份验证逻辑,包括电子邮件验证和密码恢复。 我知道这可以被认为是无耻的推广,但我希望它是有用的。 虽然它不是你正在寻找的东西,但它看起来相 ...

WSO2 IDS:我可以添加第三方的IDS作为我的可信身份提供商,如果是这样的话?(WSO2 IDS: Can I add third party's IDS as my Trusted Identity Provider, if so how?)

是。 它可以以不同的方式完成。 例如,您的第三方应用程序是一个生命线,您可以使用WSO2IS作为openid提供程序。 因为liferay允许使用openid登录到它的门户网站。 此外,您的第三方应用程序支持SAML2 sso,WSO2IS可用作SAML2 SSO提供程序。 如果第三方应用程序是IIS托管应用程序,则可以使用Passive-STS。 此外,如果第三方应用程序不支持任何通用标准,则可能存在可用于扩展其身份验证机制的扩展。 如果是这种情况,您可以编写扩展到第三方应用程序,以调用WSO2 ...

如何处理通过第三方OAuth1.0a进行身份验证的用户登录状态?(How to handle logged in state of user authenticated via 3rd party OAuth1.0a?)

通常,您可能希望将您的用户的一些信息永久保存在您自己的服务器上,因此可能需要在数据库中保存。 在您的特定情况下,该数据库应该可能会保存您从Discogs获得的某种唯一用户标识(出于安全原因,请勿保存访问标识本身),您可以在后续登录时使用该标识来标识哪些访问标记属于同一个标识用户。 你的流量可能是这样的: 用户首次通过Discogs登录,您将获得访问令牌,并将其放入会话中 您可以以某种方式找出唯一的用户标识,并将其保存到您的数据库以及您可能需要的任何其他用户信息中 您也将该ID放入会话中 用户注销, ...

Azure服务结构 - 为多个第三方服务创建应用程序(Azure Service Fabric - Application creation for multiple 3rd party services)

你的问题并不清楚真正的问题。 如果你举出真实的例子,可以更容易地给你更好的答案。 关于主要问题: 应用程序对您的服务来说只是一个逻辑上的隔离,所以对于一个具有100个一种服务类型实例的应用程序或者每个应用程序具有100个应用程序一个实例而言,没有多大区别,最后,运行的实例数量将相同(除非你决定采用共享流程的方式,这看起来不是你的情况),最大的区别是你将如何管理它们。 如果担心是管理问题,多个应用程序可能会给您更多的灵活性,但难以维护。 例如: 假设您有一个具有两种服务类型(ServiceAlpha ...

如何在Azure云服务上使用第三方DLL(How to use 3rd party DLL on Azure Cloud Service)

根据文件 : 在启动过程的启动任务阶段,可能无法完全配置IS,因此特定于角色的数据可能不可用。 需要特定于角色的数据的启动任务应使用Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart。 如果OnStart方法不适合您,请尝试将ConfigureIIS.cmd的taskType更改为background (它将异步运行)并采用powershell脚本等待,直到配置应用程序池: <Startup> <Task commandL ...

使用没有第三方Cookie的Google Firebase身份验证(Use Google Firebase Authentication without 3rd Party Cookies)

您是否尝试过使用gapi.auth2 , Google登录 Javascript 库 ? 上次我检查时,它禁用了第三方cookie。 您可以使用它来获取Google ID令牌或访问令牌,然后登录Firebase: firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(googleIdToken, googleAccessToken))...` Have you tried using ga ...

如果第三方API身份验证失败,我的API应返回哪些HTTP错误代码?(What HTTP error codes should my API return if a 3rd party API auth fails?)

401是要走的路。 RFC2616的两个摘录定义了HTTP协议: 第10.4.2节(约401): 如果请求已包含授权凭据,则401响应表示已拒绝这些凭据的授权。 这似乎适用于过期的令牌。 有身份验证凭据,但它们被拒绝,因此用户代理必须重新进行身份验证。 第10.4.4节(约403): 服务器理解请求,但拒绝履行请求。 授权无效,请求不应重复。 尽管用户凭据无法访问资源,但应使用此方法。 可能是一个网站/ API,仅适用于被亚洲IP或已声明有害且已停用的网页击中的美国(因此内容已找到,但服务器拒绝提 ...

使用由第三方提供商托管的网络字体有什么安全隐患?(What are the security implications of using a web font hosted by a 3rd party provider? [closed])

Google Fonts提供了3种在页面上包含字体的方法:通过link元素,CSS @import语句和外部JavaScript。 如果使用link属性设置为“text / css”或通过css @import语句包含样式表,则应该没有安全问题; 浏览器只会尝试将其作为CSS读取并忽略任何无效的内容。 通过外部JavaScript包含字体会有潜在的安全风险,但这一切都归结为信任; 您信任Google或Adobe为您托管JavaScript吗? Google Fonts offers 3 metho ...

供应第三方Azure集成应用程序SPN(Provisioning 3rd party Azure integrated application SPN)

据我所知,没有这样的API,我们可以同意许可。 但是,它可以使用参数prompt=admint_consent授予所有组织的同意。 有关此参数的更多详细信息,请参阅此处 。 As far as I know, there is no such API we can grant the consent for the permission. However it is able to grant the consent for the all organization using the param ...

使用Azure功能的第三方身份验证提供程序(Using a 3rd party auth provider with Azure Functions)

您的最终想法是标记,如果您带来的第三方身份验证提供程序不受App Service身份验证支持,最佳选择是允许未经身份验证的访问并自行验证请求。 但是,请记住,任何输入绑定都将在您的功能代码执行之前运行(并进行身份验证验证),因此您需要小心使用输入绑定和自定义身份验证。 更新 :应用服务身份验证确实在待办事项上“带上您自己的身份验证提供程序”,因此希望很快能够更好地支持此方案。 Your final thought is on the mark, if you're bringing a 3rd p ...

相关文章

更多

最新问答

更多
  • 提交的编译错误 - UVA(Compilation error for submission - UVA)
  • 在Windows中编译Qt时出现致命错误(Fatal error when compiling Qt in Windows)
  • 如何在bootstrap 3中垂直居中文本?(How to vertically center text in bootstrap 3?)
  • 使用管道时“文件名,目录名称或卷标语法不正确”。(When using pipe getting “The filename, directory name, or volume label syntax is incorrect.”)
  • Node中的Mustache和Express(Mustache and Express in Node)
  • 插入数据库错误SQLSTATE [HY093](insert into database error SQLSTATE[HY093])
  • 将支持页面添加到Web Store扩展页面(Adding Support Page to Web Store Extension Page)
  • expressjs TypeError:无法设置undefined的属性'session'(expressjs TypeError: Cannot set property 'session' of undefined)
  • ASP.Net Web表单友好的URL无法在服务器上运行(ASP.Net Web Forms Friendly URLs not working on server)
  • 捕获表标记内的类并捕获多个项目(Capturing a class inside a table tag and capturing multiple items)
  • 使用输入框填充剩余的DIV标签空间高度(Fill the rest of DIV tag space height with Input Box)
  • Angular2输入调用两次方法(Angular2 Input call twice a method)
  • 使用回旋镖解析整数列表(Parse a list of integers using boomerang)
  • SWT:如何正确对齐工具栏中的项目(SWT: How to right align items in a toolbar)
  • 从所有客户中选择Rails中的最后一条记录(Select from all customers the last record in Rails)
  • 从一个模型到另一个模型的引用var返回Backbone中的默认值(Reference var from one model to another returns defaults in Backbone)
  • 如何允许在android ndk中使用make_shared(how to allow using make_shared in android ndk)
  • 正则表达式 - 从字符串中删除数字[关闭](Regex - delete numbers from string [closed])
  • Python中的递归和列表(Recursion and lists in Python)
  • 我需要编写window.onload = function()来使Javascript工作(I need to write window.onload=function() for Javascript to work)
  • 如何为泛型方法创建委托?(How to create a delegate for a generic method?)
  • Nutch和Elasticsearch 1.1.1(Nutch and Elasticsearch 1.1.1)
  • 如何将arraylist与我的对象相关联?(How to associate an arraylist with my object? [closed])
  • 在C中查找重定向输入文件中的文件结尾(Finding End of File in the Redirected Input file in C)
  • 将三个文件的内容合并为一个(joining the contents of three files into one)
  • 成员函数和类名之间的名称冲突(Name conflict between member function and class name)
  • 如何在laravel 5.3中获取参数?(How to get parameter in laravel 5.3?)
  • 使用带结构的地图作为键 - 值不保存[重复](Using map with structure as key - value doesn't save [duplicate])
  • SQL结果按周,日分组(SQL results grouped by Weeks, Day)
  • 如何检查字符串是否在文件中(How to check if a string is in a file)