我正在遵循本指南并使用jwt.io chrome 插件,但我找不到我的密钥,因此我可以手动验证签名。
JWT 标头
{
"typ": "JWT",
"alg": "RS256",
"kid": "c9HOlAkfaBs4YSKZ7RoMnZlKrVzdkXHB2QoLv1fETQ8"
}
Run Code Online (Sandbox Code Playgroud)
该ID连接元数据文档使我https://login.microsoftonline.com/common/discovery/v2.0/keys但响应没有这个孩子。
我也参考了这篇博文。
我正在 GitHub 上试用名为 active-directory-b2c-dotnet-webapp-and-webapi 的示例代码,当我针对示例中的 AD B2C 目录运行它时,它工作正常,但我在尝试时遇到了问题我自己的 AD B2C 目录。我收到以下错误:
ID 为“xxx”的应用程序无法获取 ID 令牌,因为未请求 openid 范围或应用程序未获得授权
openid 范围不是自动包含的吗?我按照提供的说明设置了一个 Web 应用程序和一个 Web API 应用程序。当我查看 Web 应用程序有权访问的范围时,openid 范围未在此处列出。这是我需要手动添加的东西吗?
在哪里可以找到所有受支持的 Azure AD B2C 自定义策略声明转换方法的列表?
我已经在 Google、Bing、DuckDuckGo 和 GitHub 上搜索过此类列表,但找不到。
并且 TrustFrameworkPolicy_0.3.0.0.xsd 架构不包含它。
https://github.com/Azure-Samples/active-directory-b2c-advanced-policies/blob/master/Documentation/Features%20part%206.md - 确实有一个过时的列表 - 有些方法AddParameterToStringCollection不能used - 使用时无法导入策略。
我正在尝试使用 Azure B2C Active Directory 实施身份验证。一切正常,我可以使用特定策略登录并从 B2C 活动目录中获取 access_token。但是,当我尝试在登录 url 的范围内传递值“offline_access”以获取刷新令牌时,它返回一条错误消息,我无法登录。我正在使用 Angular 5 的 ADAL(Azure 目录身份验证库)对 Azure AD 进行身份验证。
这是我尝试在 url 范围内传递“offline_access”值时遇到的问题图像
完整的错误信息:
http://localhost:4200/dashboard#error=invalid_request&error_description=AADB2C90012%253a+The+scope+ 'openid+offline_access'+provided+in+request+is+not+supported.%0D%0ACorrelation+ID%253a+05f9f8b0- a8a0-4fdc-9cca-50a4e81a929c%0D%0ATimestamp%253a+2018-01-17+04%253a35%253a36Z%0D%0A&state=a878cc7f-6d87-47e6-a095
我在这里错过了什么吗?或者有另一种方法来获取刷新令牌?
我正在尝试在 Azure AD B2C 租户中创建自定义策略。但是“添加”和“上传策略”这两个按钮都被禁用了。看起来自定义策略迄今尚未启动。是这样吗?我搜索了很多,但找不到任何表明是否已启动自定义策略的文件。我的要求是能够:
1) 更改电子邮件地址 2) 更改密码
我正在为我的 Azure AD B2C 登录/注册使用自定义页面 UI 模板,我想知道我需要CORS在我的 Azure Blob 存储帐户的配置中使用哪个域。
登录页面似乎来自https://login.microsoftonline.com. 这是正确的起源吗?
当我使用StorageClientMicrosoft 创建的命令行工具将我的自定义 UI 文件上传到我的 Azure Blob 存储时,我注意到它也将其设置*为Allowed Origins文档所指示的。这是文档:https : //docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-ui-customization-custom-dynamic#step-3-configure-cors-in-天蓝色应用服务
我不认为这真的很安全,我想将它限制在那些绝对必要的域中。
我想这样做有两个原因,这两个都很重要:
CORS是,在 Azure Blob 存储的服务级别而不是容器级别设置。我在同一个存储帐户下还有其他包含用户文件的容器。这些文件只能从我的应用程序访问,该应用程序创建了一个 SAS 以允许访问它们。如果我将Allowed Originsfor设置为CORSany,即使受保护的文件仍然需要 SAS,它也会降低我的应用程序的安全性。正如我之前所说,我希望尽可能保持安全。所以,问题是:我应该Allowed Origins在CORSAzure AD B2C 的配置中输入什么 URL ?我不只是想假设这是https://login.microsoftonline.com因为 Microsoft 通常会在他们的服务中进行一些重定向,而且我想确保包含所有必要的来源。
azure azure-active-directory azure-blob-storage azure-ad-b2c
使用 azure AzureADB2C 进行身份验证时,我想将门户中管理的自定义声明添加到声明原则
current code in start up
services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
.AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));
Run Code Online (Sandbox Code Playgroud)
我认为它应该像这样工作,但在令牌验证时从未被击中
services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
.AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options))
.AddJwtBearer(o =>
{
o.Events = new JwtBearerEvents
{
OnTokenValidated = async ctx =>
{
var claims = new List<Claim> { new Claim("ConfidentialAccess", "true") };
var appIdentity = new ClaimsIdentity(claims);
ctx.Principal.AddIdentity(appIdentity);
}
};
});
Run Code Online (Sandbox Code Playgroud) 因此,我创建了 azure b2c 目录,并在其中创建了应用程序,例如https://github.com/Azure-Samples/active-directory-b2c-javascript-msal-singlepageapp,我在一般的 azure 目录中创建了 azure 函数,假设读取 blob 并返回 json 文件。我还创建了用于登录的自定义登录页面。我在本地运行我的程序,我可以登录,而不是调用 github 中使用的 API,我调用 azure 函数并且它可以工作。但现在我想保护对功能的访问,所以我将 authLevel 设为“用户”并尝试通过 Azure Active Directory 进行身份验证。而且无论我怎么设置,或者因为没有权限而无法连接,或者因为没有权限而无法使用功能。我也收到此错误请求中指定的客户端 ID '/.auth/login/aad/callback' 未在租户 '' 中注册。”
我应该如何将函数连接到 b2c,以便只有授权用户才能访问函数响应。
此元素出现在向 B2C 添加 REST 服务的文档中,例如:https : //docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-custom-rest-api-netfw我不清楚这是什么意思。
在上传修改后的 trust_framework_extension 文件时,我创建了一个新的声明类型并添加了 Predicates 和 PredicateValidations 元素,但是当我上传文件时出现错误
“命名空间‘ http://schemas.microsoft.com/online/cpim/schemas/2013/06 ’中的元素‘BuildingBlocks’在命名空间中具有无效的子元素‘Predicates’……”
文档显示“buildingBlocks”应包含“Predicates”和“PredicateValidations”,但会引发错误。
“InputValidations”也不再出现在构建块中,因为我也遇到了错误。遵循在线文档:: https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-password-complexity-custom
错误:: 验证失败:在租户“abc.onmicrosoft.com”的策略“B2C_1A_B_TRUSTFRAMEWORKEXTENSIONS”中发现 1 个验证错误。在租户“abc.onmicrosoft.com”的策略“B2C_1A_B_TRUSTFRAMEWORKEXTENSIONS”的第 78 列第 6 行发现架构验证错误“:元素‘BuildingBlocks’命名空间“ http://schemas.microsoft.com/online/cpim/schemas/2013/06具有无效的子元素‘谓词’命名空间” http://schemas.microsoft.com/在线/cpim/schemas/2013/06 '。预期的可能元素列表:命名空间中的“ClientDefinitions、ContentDefinitions、Localization” http://schemas.microsoft.com/online/cpim/schema
<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="newPassword">
<InputValidationReference Id="PasswordValidation" />
</ClaimType>
<ClaimType Id="reenterPassword">
<InputValidationReference Id="PasswordValidation" />
</ClaimType>
</ClaimsSchema>
<Predicates>
<Predicate Id="Length" Method="IsLengthRange" HelpText="The password must be between 3 and 5 characters.">
<Parameters>
<Parameter Id="Minimum">3</Parameter>
<Parameter Id="Maximum">5</Parameter>
</Parameters>
</Predicate>
<Predicate Id="Number" Method="IncludesCharacters">
<UserHelpText>a digit</UserHelpText>
<Parameters>
<Parameter Id="CharacterSet">0-9</Parameter>
</Parameters>
</Predicate>
</Predicates>
<PredicateValidations>
<PredicateValidation Id="PasswordValidation">
<PredicateReferences Id="LengthGroup" MatchAtLeast="1">
<PredicateReference …Run Code Online (Sandbox Code Playgroud) azure-ad-b2c ×10
azure ×3
adal ×1
angular5 ×1
asp.net-core ×1
c# ×1
claims ×1
identity-experience-framework ×1
jwt ×1
openid ×1