ValidationTP 或 IncludedTP 在 TechnicalProfile X 处理的哪个阶段执行?在 X 产生 OutputClaims 之前?后?
假设我的 TP 有以下声明。它还有一个 ValidationTP Y。Y 可以保留“电子邮件”吗(它是否可用)?
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true" />
Run Code Online (Sandbox Code Playgroud)
或者,假设我的 TP X 使用另一个 Y 作为 ValidationTP,Y 输入并输出一些声明(Input/OutputClaim)。它们可用于 X 的输出吗?如果它们在 ValidationTP 中标记为 OutputClaims,我是否还需要将它们标记为 OutputClaims?
我希望能够根据输入的电子邮件地址选择要使用的身份提供商。
登录 Microsoft 资源时,我会看到一个登录框,我可以在其中输入我的电子邮件地址。一旦它知道我的电子邮件地址,我就会被重定向到正确身份提供商的登录页面。例如,如果我输入“testuser@shell.com”,我将被重定向到 Shell 的登录页面。
使用 AD B2C,可以联合任何提供商进行身份验证,但用户必须在登录之前选择要使用的提供商。这对于使用 SSO 的多租户应用程序来说并不好,因为我必须为每个提供商提供一个按钮租户,或为每个租户提供不同的 url。我想使用单个 URL 并根据他们输入的电子邮件地址自动选择身份提供商。
我可以在 AD B2C 之外构建一些东西,但是是否可以在 AD B2C 自定义策略中构建类似的东西?
无论我将哪个外部托管的 Rest Api 端点传递给自定义策略 xml,AADB2C 都会针对所有 URI 引发此错误
尝试创建自定义策略来连接本地托管的 Restful API 端点之一(将用户旅程作为编排步骤)
我希望访问本地托管的 Restful 端点 - 'GetListOfDepartments',但实际输出是 AADB2C:请求 URI 'http://localhost:5000/api/businesslogic/GetListOfDepartments' 解析为受限制 IP 中的 IP 地址范围
我有一个 MVC 5 应用程序,它首先使用业务用户的 SQL 标准凭据登录,然后将他们重定向到 Azure AD 登录页面。(我们不能使用任何类型的 SSO 解决方案。该应用程序公开的工具广泛使用 SQL 登录。我们需要 Azure AD 使用 Microsoft Authenticator 应用程序执行 MFA。这不是一个公开可用的应用程序,它用于仅已知经过审查的用户)。
我真正想做的是使用我们在数据库中为用户存储的电子邮件地址填充该登录页面上的电子邮件地址字段。我环顾四周,这似乎不太可能。有任何想法吗?我缺少什么?
我的 Azure B2C 具有自定义策略,并启用了本地登录和 Microsoft 帐户登录。我已经开始使用入门包并进行了一些修改,以添加用于验证的自定义逻辑并添加其他声明,如此处所述。
使用 Microsoft 帐户一切正常。但我遇到本地帐户登录问题。
电子邮件声明仅在用户注册时填充,但在登录时不填充。如果登录,电子邮件是“signInNames.emailAddress”声明的一部分。我尝试按照此处和此处的说明进行更改。我希望将电子邮件填充到电子邮件声明中,因为我的 API 使用此声明。
从我的 REST API 返回的其他 calim 不会添加到仅用于本地登录的令牌中。它们是为 Microsoft 帐户添加的。
谢谢。
更新:对于第 2 点,它是我的策略文件的问题,现已修复。
我正在开发 xamarin.form 项目。我根据此示例添加 B2C 身份验证: https://learn.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/authentication/azure-ad-b2c 我完全复制并粘贴并且没有更改方法。现在它可以工作了,但问题出在 AuthenticationResult ar 参数中,访问令牌为空,而且到期日期也错误。我无法解决它。我附上了 AuthenticationResult 内容的图像, 如果您需要更多信息,请告诉我。
我正在开发一个 ASP.NET Core API,并且我正在尝试尽我所能地完成身份验证和授权部分。我正在研究 OAuth 2 和 OpenIDConnect(目前还处于非常初步的研究)。但从 API 开发人员的角度来看,在流程中插入 Auth0 或 Azure AD B2C 等身份提供程序而不是仅使用某种形式的加密技术存储用户凭据,我可以获得什么好处?
另外,Oauth 2 似乎允许许多流量,API 的工作是否与使用该 API 的应用程序的流量有关?似乎有点不合理。我想要的只是有一种安全的方式来存储用户凭据,并允许我的 API 的用户在使用和操作 API 内其他服务中的资源之前执行身份验证和授权。
我知道身份验证和授权是应用程序中的一个敏感主题,因为它们涉及安全问题,并且我计划构建一个处理敏感财务操作的应用程序。这就是我追求 Auth0 和 Azure AD B2C 的原因。但说实话,我在尝试理解像这样的身份提供者会带来什么方面遇到了一些麻烦,我知道它们会带来一些重要的东西,我只是需要一些帮助来了解我应该使用它们的内容和原因。
您好,我正在尝试编写一个 azure b2c 自定义策略,该策略将电子邮件验证与 sendgrid(显示控制)发送自定义电子邮件分开,然后要求用户输入姓名等值。
我使用以下技术配置文件来获取电子邮件并使用 sendgrid 和显示控件通过自定义邮件对其进行验证:
<TechnicalProfile Id="EmailVerification">
<DisplayName>Initiate Email Address Verification For Local Account</DisplayName>
<Protocol Name="Proprietary"
Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
<Item Key="language.button_continue">Continue</Item>
<!--OTP validation error messages-->
<Item Key="UserMessageIfSessionDoesNotExist">You have exceed the maximum time allowed.</Item>
<Item Key="UserMessageIfMaxRetryAttempted">You have exceed the number of retries allowed.</Item>
<Item Key="UserMessageIfInvalidCode">You have entered the wrong code.</Item>
<Item Key="UserMessageIfSessionConflict">Cannot verify the code, please try again later.</Item>
</Metadata>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
</CryptographicKeys>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims> …Run Code Online (Sandbox Code Playgroud) 当我尝试单击 Azure B2C 登录页面上的 google 登录时,它会将我重定向到另一个页面,并显示错误 403 disallowed_useragent。
这是我到目前为止所尝试的:
添加尝试添加文档overrideUserAgent中提到的内容。将这一行添加到 Capacitor.config.json 的根部
"overrideUserAgent": "Mozilla/5.0 Google"
Run Code Online (Sandbox Code Playgroud)
我还尝试添加 UserAgent插件 我在应用程序组件中添加此行来设置用户代理
this.userAgent.set('Mozilla/5.0 Google')
.then((res: any) => console.log('UserAgent test' + res))
.catch((error: any) => console.error(error));
Run Code Online (Sandbox Code Playgroud)
最后我还在 config.xml 中添加了这一行
<preference name="OverrideUserAgent" value="Mozilla/5.0 Google" />
Run Code Online (Sandbox Code Playgroud)
当我调试 inAppBrowser 控制台日志时,这些解决方案中的任何一个都有效,我在请求标头中看到此结果
user-agent: Mozilla/5.0 (Linux; Android 11; sdk_gphone_x86 Build/RPB1.200504.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.44 Mobile Safari/537.36
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
我正在使用 msal.js v1.3 将应用程序升级到 v2.3,并且在获取 id 令牌后检索访问令牌时遇到问题。
我在构造函数中初始化了handleRedirectPromise。然后,当用户单击登录按钮时,我调用 loginRedirect 并传入一个具有 openid 范围和来自我单独注册的 api 的范围的对象。这很有效,id 令牌返回,我调用 acquireTokenSilent 来检索我的访问令牌。我将一个包含我注册的 api 范围和帐户的对象从 loginRedirect 调用传递到此函数中。
问题是来自 acquireTokenSilent 的授权响应具有空的访问令牌。令牌端点的结果如下所示:
client_info: "xx"
id_token: "xx"
not_before: 1602895189
refresh_token: "xx"
refresh_token_expires_in: 1209600
scope: ""
token_type: "Bearer"
Run Code Online (Sandbox Code Playgroud)
它没有访问令牌,但它确实指定了令牌类型,因为Bearer
响应中没有访问令牌,并且看起来返回的范围属性为空。这是我的代码:
client_info: "xx"
id_token: "xx"
not_before: 1602895189
refresh_token: "xx"
refresh_token_expires_in: 1209600
scope: ""
token_type: "Bearer"
Run Code Online (Sandbox Code Playgroud)
为什么访问令牌没有从令牌端点返回?这与范围返回空有关吗?我尝试删除范围并放入无效条目,然后出现错误,所以我知道我的请求至少是有效的。另外,为了验证一下,我在 AAD 中有 2 个应用程序注册,一个是我为我的 spa 创建的,具有代码流,另一个是我为我的 api 创建的旧注册,具有公开的 api 和范围。
azure-ad-b2c ×10
azure ×5
api ×1
c# ×1
capacitor ×1
identity ×1
identity-experience-framework ×1
msal.js ×1
oauth-2.0 ×1
rest ×1