hor*_*ius 6 restful-authentication azure azure-api-management azure-ad-b2c azure-functions
我领导着一个庞大的 azure 函数开发团队。因此,Microsoft 引用的大多数使用 azure Web 界面的示例对我都不起作用。我正在使用模拟器在本地开发 Azure 函数以节省一些成本。我通过 Visual Studio 将所有功能发布到我的集成环境中。
我正在开发一堆需要 api 网关来处理使用 Azure AD B2C 的身份验证工作流的 azure 函数。现在,没有可以在本地运行的 api 网关模拟器或 Azure AD B2C 模拟器。我的身份验证工作流程涉及拦截对 api 的请求,将它们重定向到 AD B2C 进行身份验证,随后将 auth-token 添加到 http 标头,然后调用 http 触发的 azure 函数。
现在,问题变成了,我如何测试身份验证工作流程?如何设置 api 网关以将我在 Visual Studio 中本地运行的函数注册为云中 api 网关的 api 端点?
如果您正在开发通过Easy Auth使用 Azure-AD 或 Azure B2C 的 SPA,这是另一种选择,它将为您执行 JWT 令牌验证,并让您执行以下操作:
您的 SPA 甚至会在本地获得令牌,因此请执行以下操作:
下面是一些从头中提取 JWT 令牌的示例代码(HttpRequest 被注入到每个函数中):
private JwtSecurityToken ReadJwtTokenFromHeader(HttpRequest req)
{
if (req.Headers.ContainsKey("Authorization"))
{
var authHeader = req.Headers["Authorization"];
var headerValue = AuthenticationHeaderValue.Parse(authHeader);
var handler = new JwtSecurityTokenHandler();
return handler.ReadJwtToken(headerValue.Parameter);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
注意:这需要 System.IdentityModel.Tokens.Jwt NuGet 包才能使用 JwtSecurityTokenHandler。
我做了什么:
优点:
| 归档时间: |
|
| 查看次数: |
1314 次 |
| 最近记录: |