请告诉我这些第三方身份验证之间的区别,即 open id、o-auth1.0、o-auth1.0a 、o-auth2.0 和 open id connect。好吧,我用谷歌搜索了这个,但无法找到所有这些之间的确切区别。我一直在 o-auth 和 open id 之间有所不同,但不是所有这些都在一起。
任何参考或任何解释将不胜感激。提前致谢。
OpenID Connect Spec OAuth 2.0多种响应类型编码实践规定可以组合多个response_type,例如response_type="code token"。现在,我想知道请求授权码和令牌有什么好处。如果您已经拥有令牌,验证码就不是多余的吗?
我正在使用OWIN中间件进行Cookie身份验证和openIdConnect。在向cookie身份验证选项的启动身份验证代码中添加openIdConnect身份验证之前,LoginPath被用作重定向未经身份验证的用户的目标。这确实很好,并且是我想保留的功能。
但是,当我将app.UseOpenIdConnectAuthentication添加到我的项目时,它开始自动将未经身份验证的用户重定向到我的OpenIdConnect授权(https://login.windows.net/)。
有没有一种方法可以禁用OpenIdConnectAuthentication设置未经身份验证的用户的重定向路径,并依靠LoginPath设置Cookie身份验证?我目前的解决方法是在我的authorize属性中手动设置重定向路径,但是我想让OWIN中间件在可能的情况下进行处理。
谢谢。
码:
public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
var cookieOptions = new CookieAuthenticationOptions();
cookieOptions.AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie;
cookieOptions.LoginPath = new PathString("/Account/Login");
app.SetDefaultSignInAsAuthenticationType(cookieOptions.AuthenticationType);
app.UseCookieAuthentication(cookieOptions);
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
AuthenticationType = FranchiseAuthType,
ClientId = franchiseClientId,
Authority = FranchiseAuthority,
PostLogoutRedirectUri = postLogoutRedirectUri,
});
}
Run Code Online (Sandbox Code Playgroud) 在OpenID Connect中,ID令牌是加密签名的自包含令牌,允许资源所有者在不调用授权服务器的情况下授权访问.因此,如果授权服务器不需要验证令牌,那么如何在会话管理场景中撤销它?似乎唯一可以撤销的是刷新令牌,此时ID令牌将过期,用户必须重新进行身份验证.它是否正确?此外,OpenID Connect Provider/Server在交付令牌时是否有意义存储令牌?
我有几个使用 openid 连接授权代码流的 Web 应用程序客户端,每个应用程序都有不同的客户端密钥和密钥。我想与我所有的网络应用程序共享 ID 令牌,换句话说,创建一个会话,以便使用浏览器的用户可以使用任何网络应用程序而无需再次进行身份验证。
我计划将构成会话一部分的所有 Web 应用程序的客户端 ID 添加到 aud(受众)中。
这有什么问题吗?
每个 Web 应用程序都可以使用 id 令牌请求访问令牌吗?
我已安装WSO2 IS 5.2.0,我有问题检索自定义创建的声明.
我已经为方言http://wso2.org/claims添加了新的声明,我还添加了新的声明,将相同的属性映射到与5.1.0版一起使用的方言http://wso2.org/oidc/claim但是在版本5.2.0无法正常工作.
所有字段都存在于数据库属性表中.我正在使用Oauth2 OpenID连接userInfo来获取用户数据.
通过5.1.0中的这个配置,我从图像中获得了所有请求的声明,但是在5.2.0中,我只获得了非自定义的声明 - 默认情况下已经存在于两种方言中.
我正在探索我的项目SSO解决方案的keycloak,我正在尝试这个博客上的open-connect https://developers.redhat.com/blog/2017/05/25/easily-secure-your-spring-boot-applications -with-keycloak /
我想提出一个关于Single Sign Out的问题,我想知道背后的原理是什么.试图搜索在线文档,但我没有找到任何线索.有一段时间,我认为在oauth2世界中单点登出没有优雅的解决方案.
我试图通过此帖子用ASOS强加OpenID Connect服务器(资源所有者密码凭据授予)。当我在一个应用程序中同时拥有授权服务器和资源服务器时,一切工作正常。但是,当我在两个应用程序(但在一台机器上)上拆分它们时,资源服务器无法验证令牌并返回访问令牌无效。
我下载了的源代码AspNet.Security.OAuth.Validation以调查此问题,并在此处返回null
以下是来自授权服务器的一些日志:
信息:Microsoft.AspNetCore.Hosting.Internal.WebHost [1]
请求启动HTTP / 1.1 POST http:// localhost:5000 / connect / token application / x-www-form-urlencoded; 字符集= UTF-8 77
信息:AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware [0]
令牌请求已成功从HTTP请求中提取:{
“ grant_type”:“密码”,
“ username”:“ UserLogin”,
“ password”:“ [出于安全原因被删除]”,
“ scope”:“ offline_access”
}。
信息:AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware [0]
令牌请求已成功验证。
记录:AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware [0]
触发了登录操作:子:123,用户名:UserLogin; [.scopes,[“电子邮件”,“个人资料”,“离线访问”]],[。resources,[“ resource_server”]]。
dbug:Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository [37]
从文件'C:\ Users \ User1 \ AppData \ Local \ ASP.NET \ DataProtection-Keys \ key-********-****-****-****-中读取数据64bb57db1c3b.xml”。
dbug:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [18]
找到了密钥{********-****-****-****-64bb57db1c3b}。
dbug:Microsoft.AspNetCore.DataProtection.KeyManagement.DefaultKeyResolver [13]
将失效日期为2017-09-27 16:44:49Z的密钥{********-****-****-****-****-64bb57db1c3b}作为默认密钥。
dbug:Microsoft.AspNetCore.DataProtection.XmlEncryption.DpapiXmlDecryptor [51]
使用Windows … 如果我在Visual Studio 2017中创建新的ASP.NET Core MVC应用程序,则可以将一行一行的客户端密钥添加到AzureAdServiceCollectionExtensions:
public void Configure(string name, OpenIdConnectOptions options)
{
options.ClientId = _azureOptions.ClientId;
// Add this line below
options.ClientSecret = _azureOptions.ClientSecret;
options.Authority = $"{_azureOptions.Instance}{_azureOptions.TenantId}";
options.UseTokenLifetime = true;
options.CallbackPath = _azureOptions.CallbackPath;
options.RequireHttpsMetadata = false;
}
Run Code Online (Sandbox Code Playgroud)
配置POCO已经连接好,可以从配置文件中获取它。
另一方面,在Web API项目中,身份验证使用JWT令牌,而Visual Studio生成的代码则不同:
public void Configure(string name, JwtBearerOptions options)
{
options.Audience = _azureOptions.ClientId;
options.Authority = $"{_azureOptions.Instance}{_azureOptions.TenantId}";
}
Run Code Online (Sandbox Code Playgroud)
我不确定JwtBearOptions将客户密码放在何处。
从如何确保对在线资源的访问的一般开发角度来看,我对此感到很好奇。我们使用以下firebase配置参数初始化webapp:
apikeyauthdomainprojectiddatabaseurlmessagesenderid服务器如何使用它们来确保请求有效?主要是为什么其他人不能只从应用程序中提取这些参数,然后创建另一个对“ Evil”使用相同参数的“ Evil”应用程序。
“邪恶”将包括创建一个具有与真实应用程序相同的凭据的其他应用程序,使用纯电子邮件/密码注册表单使用真实应用程序中包含的相同凭据对用户进行注册,然后在用户登录后执行甚至更多的“邪恶”。
同样是简单的节点快速js应用程序,我们希望使用上述参数来确保对其的访问安全,从应用程序请求生命周期的角度来看,这将如何工作?
1)快递收到请求
2)快递检查...
最后,openid-connect是如何工作的?换句话说,它是完全遵循openid-connect规范还是仅针对Firebase构建的基于自定义的安全解决方案?
javascript node.js firebase openid-connect firebase-authentication
openid-connect ×10
oauth-2.0 ×5
asp.net-core ×2
jwt ×2
oauth ×2
access-token ×1
asp.net-mvc ×1
firebase ×1
javascript ×1
keycloak ×1
node.js ×1
openid ×1
owin ×1
wso2is ×1