- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的应用需要通过手机号码或 Google 登录。我们计划将 Twitter Digits 用于手机号码认证。
我理解的注册和认证流程如下:
移动应用程序使用 Twitter Digits 或 Google Sign In 进行丰富的身份验证(对用户来说,进行丰富的身份验证比打开网络浏览器选项卡的用户体验更好)。 Twitter 数字/Google 登录返回身份 token 。
移动应用程序调用 AuthServer 进行登录并提供身份 token 。
身份服务器使用数字服务或 Google 身份验证服务验证提供的身份 token 。
验证后,AuthServer 将尝试查找用户,如果不存在,它将创建一个。
AuthServer 将访问 token 返回给移动应用。
现在,我正在寻找实现步骤 #3-4 的选项。
目前,我所做的是修改将用户名作为电话号码或电子邮件地址以及作为 Google/Twitter Digits ID token 发送的密码的 token 端点代码。现在,由于 auth 服务器需要知道发送的密码实际上是一个需要第三方服务验证的 token ,我通过在 TokenHint 中发送服务名称“Digits”或“Google”来解决这个问题。
这非常有效,但我想知道支持我想要实现的目标的最干净的方法是什么。
最佳答案
This works very well, but I am wondering what is the cleanest way to support what I am trying to achieve.
我个人会选择自定义资助类型:
[HttpPost("~/connect/token")]
[Produces("application/json")]
public IActionResult Exchange(OpenIdConnectRequest request)
{
if (request.GrantType == "urn:ietf:params:oauth:grant-type:google_identity_token")
{
// Reject the request if the "assertion" parameter is missing.
if (string.IsNullOrEmpty(request.Assertion))
{
return BadRequest(new OpenIdConnectResponse
{
Error = OpenIdConnectConstants.Errors.InvalidRequest,
ErrorDescription = "The mandatory 'assertion' parameter was missing."
});
}
// Create a new ClaimsIdentity containing the claims that
// will be used to create an id_token and/or an access token.
var identity = new ClaimsIdentity(OpenIdConnectServerDefaults.AuthenticationScheme);
// Manually validate the identity token issued by Google,
// including the issuer, the signature and the audience.
// Then, copy the claims you need to the "identity" instance.
// Create a new authentication ticket holding the user identity.
var ticket = new AuthenticationTicket(
new ClaimsPrincipal(identity),
new AuthenticationProperties(),
OpenIdConnectServerDefaults.AuthenticationScheme);
ticket.SetScopes(
OpenIdConnectConstants.Scopes.OpenId,
OpenIdConnectConstants.Scopes.OfflineAccess);
return SignIn(ticket.Principal, ticket.Properties, ticket.AuthenticationScheme);
}
return BadRequest(new OpenIdConnectResponse
{
Error = OpenIdConnectConstants.Errors.UnsupportedGrantType,
ErrorDescription = "The specified grant type is not supported."
});
}
请注意,您还必须在 OpenIddict 选项中启用它:
// Register the OpenIddict services.
services.AddOpenIddict()
// Register the Entity Framework stores.
.AddEntityFrameworkCoreStores<ApplicationDbContext>()
// Register the ASP.NET Core MVC binder used by OpenIddict.
// Note: if you don't call this method, you won't be able to
// bind OpenIdConnectRequest or OpenIdConnectResponse parameters.
.AddMvcBinders()
// Enable the token endpoint.
.EnableTokenEndpoint("/connect/token")
// Enable the refresh token flow and a custom grant type.
.AllowRefreshTokenFlow()
.AllowCustomFlow("urn:ietf:params:oauth:grant-type:google_identity_token")
// During development, you can disable the HTTPS requirement.
.DisableHttpsRequirement();
发送 token 请求时,确保使用正确的 grant_type
并将您的 id_token 作为 assertion
参数发送,它应该可以工作。
这是一个使用 Facebook 访问 token 的示例:
在实现 token 验证例程时要格外小心,因为这一步特别容易出错。验证所有内容非常重要,包括观众(否则,your server would be vulnerable to confused deputy attacks)。
关于c# - 带有 OpenIdDictServer 的 Rich Twitter Digits/Google Auth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41223694/
我一直在网上搜索,但没有找到明确的解释。我试图找出 rich:autocomplete 和 rich:suggestionbox 功能之间的区别。 有人能帮忙吗? 谢谢。 最佳答案 是一个 richf
谁能告诉我 rich:column 和 rich:columns 之间的区别? 最佳答案 当您想动态创建列时,您正在使用rich:columns 例如:
我使用 Richfaces 并有一个带有嵌套 rich:tooltip-s 的 rich:datatable。您可以想象生成的 HTML 看起来像这样: Table 1.1: A record
我使用 Richfaces、Seam 和 JSF,我想要如下内容: 我已经使用像这样的 rich:subtable 在一定程度上管理了它: Company Name
我们有以下丰富的:ComponentControl: #{item.hasDocuments} 的值已成功从 bean 传递为 true 或 false。 这是上下文菜单,它应该有条件地显示该项
我正在尝试使用谷歌代码片段测试工具测试以下代码片段,但我得到的只是“此页面不包含作者身份或丰富的代码片段标记”并且它变得非常烦人任何想法可能是什么问题?? Linas Located at Plaz
我对 rich 库有疑问。安装好后,我在代码中写到: from rich import print d = { "employee1": "telephone: 123-456-789 -",
我们有一个带图片的推送通知,我们面临的问题是在某些设备上没有显示图片。 具体如下:在运行 iOS 11.4.1 的 iPhone 8 中,只有推送的文本显示,没有图像。在 12.1 上运行的 iPho
我们正在使用Elasticsearch 6.8.4和Flink 1.0.18。 我们在Elasticsearch中有一个包含1个分片和1个副本的索引,我想创建自定义输入格式,以使用具有超过1个输入分割
Closed. This question needs to be more focused。它当前不接受答案。 想要改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。
我想在grails rich ui插件的dateChooser功能中设置默认时间。 richui:dateChooser name =“fromdate” value =“$ {old?.fromda
我正在使用 JSF2.0、Spring-Webflow2.3.1 和 richfaces4.2.3。我有一个 rich:extendedDataTable 它将显示数据列表(里面没有按钮)。我需要实现
我正在研究如何将 silverlight 合并到我现有的应用程序中,并且不断遇到最新的流行语“富人岛”。什么意思? 谢谢! 最佳答案 安island of richness是页面上的(相对)小区域,包
我正在尝试在 android 中实现“Rich Edittext”,我想应用“粗体、斜体、下划线、项目符号跨度、数字缩进跨度等...”效果。因此,不知何故我已经完成了粗体、斜体和其他功能,但我无法完成
我正在使用 JSF 1.2,在我正在使用的网页之一中。我想设置列的宽度。
最近我了解到 http://schema.org我将它实现到我的网站。 我有几个问题: 为什么我在丰富网页摘要测试工具中看到价格标签,但在 Google 结果中却看不到。看看结果:http://www
我正在构建一个包含动态列数的丰富数据表。在我看来,这不是什么大事,但我想从几个小时开始就得到答案。问题是当我想将数据表中的迭代变量用于嵌套循环时。在嵌套循环中,我尝试为每一行创建相同的动态列数。当我显
是否可以在 subTable 组件或列中使用 forEach 循环,在 Richfaces 中3.3?我需要呈现动态列数,但没有成功。 例子:
为什么 rich: comboBox 使用值显示在列表中而不是标签中,就像我显示描述和选择 id 一样。 我这样做了 最佳答案 rich:combobox 实现了它的设计目的(带有
我有 rich:dataTable 有多个可排序列。 ... ... etc. 排序工作正常。但是,加载页面时,表格始终按第一列排序。如何设置“默认”排序列? (例如,带有 user.sn 的那个
我是一名优秀的程序员,十分优秀!