我正在尝试重定向到 IdentityServer 进行授权,并在重定向 URL 中获取“需要代码质询”。
错误消息显示invalid_request需要代码质询,还有我的重定向 URL http://localhost:44367/signin-oidc#error=invalid_request&error_description=code%20challenge%20required&state=CfDJ8Cq6lLUEMhZLqMhFVN
这是我的客户端配置:
namespace TestClient
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = …Run Code Online (Sandbox Code Playgroud) oauth openid-connect asp.net-core identityserver4 asp.net-core-3.0
任何人都可以向我指出一些好的文档或提供有关实现ASP.NET核心REST API的身份验证和授权的最佳方法的良好信息.我需要首先对应用程序进行身份验证和授权,然后对用户进行身份验证和授权.
理想情况下,我希望能够限制经过身份验证的应用和/或用户可以访问的控制器方法.
我正在考虑使用AspNet.Security.OpenIdConnect.Serverenter进行App身份验证,但我不确定如何最好地执行用户身份验证.也许在不同的端点上为具有不同标头的用户重用OpenIdConnect身份验证以包含用户令牌.
一旦通过身份验证,我就会考虑使用角色基本安全来限制可以访问哪些控制器方法.
这是解决这个问题的正确途径吗?
用户成功登录后,我无法在从 AWS Cognito 返回的ID_TOKEN 中获取自定义属性。
我试过的步骤:
1.创建用户池 2.创建应用客户端并检查自定义属性(customattrib1,customattrib2)
用户池屏幕:
检查应用程序客户端配置中的自定义属性
3.使用admin-create-user api创建用户
下图显示了用户属性的值:
4.在客户端应用程序中使用 aws-cognito-auth.js 登录的用户。返回的 ID 令牌不包含自定义属性。
ID_TOKEN
{
"at_hash": "PKfjYDaiEty5mUOyJZlPQA",
"sub": "639d5016-2bd3-4c6f-b82d-21ae38071b09",
"email_verified": true,
"iss": "https://cognito-idp.ap-south-1.amazonaws.com/ap-south-1_XXXXXXX",
"phone_number_verified": true,
"cognito:username": "testuser",
"aud": "XYXYXYXYX",
"token_use": "id",
"auth_time": 1549349674,
"phone_number": "##########",
"exp": 1549353274,
"iat": 1549349674,
"email": "testuser@somedomain.com"
}
Run Code Online (Sandbox Code Playgroud)
我已经检查了下面的链接,其中包含有关此问题的一些信息,但到目前为止没有任何帮助。
如果用户池配置了 SAML 身份提供者,则 Cognito 用户池自定义属性不会显示在 ID 令牌中
如果用户池配置了 SAML 身份提供者,则 Cognito 用户池自定义属性不会显示在 ID 令牌中
https://www.reddit.com/r/aws/comments/a07dwg/cognito_add_custom_attribute_to_jwt_token/
请帮我弄清楚我是否遗漏了什么..
amazon-web-services openid-connect amazon-cognito aws-sdk aws-userpools
我的配置有3个站点:Identity Server(Idp),Windows身份验证主机和我的最终用户客户端站点.在客户端站点上,我请求装饰的控制器[Authorize]和Identity Server启动.
端口44305上的Windows主机显然抛出异常并且身份服务器正在接收状态500.我可以毫无问题地访问Windows主机站点URL.我找回了一份XML文档
如何调试并找出停止此身份验证过程的异常或错误?我得到了一个3部分异常,内部最多如下
InvalidOperationException: IDX10803: Unable to create to obtain configuration from: 'https://localhost:44305/'.
Microsoft.IdentityModel.Protocols.ConfigurationManager`1.<GetConfigurationAsync>d__3.MoveNext() in ConfigurationManager.cs
Run Code Online (Sandbox Code Playgroud)
Windows Host OWIN启动使用UseWindowsAuthenticationService
Identity Server OWIN正在使用AuthenticationOptions = WsFederationAuthenticationOptions
var wsFederationOptions = new WsFederationAuthenticationOptions
{
AuthenticationType = "windows",
Caption = "Windows",
SignInAsAuthenticationType = signInAsType,
MetadataAddress = "https://localhost:44305/",
Wtrealm = "urn:idsrv3"
};
app.UseWsFederationAuthentication(wsFederationOptions);
}
Run Code Online (Sandbox Code Playgroud)
以下是请求和回复
Request URL:https://localhost:44315/
Request Method:GET
Status Code:302 Found
Response:Location:https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=...
Request: https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=...
Request Method:GET
Status Code:302 Found
Location:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b
Request URL:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b
Request Method:GET
Status Code:500 Internal Server Error
Run Code Online (Sandbox Code Playgroud)
我没有可见的SSL问题.使用我的浏览器,我可以打开不同网站的所有页面,而不会发出任何警告.我将localhost IIS …
我正在使用OIDC和OAuth 2.0(使用Auth0)构建一个系统,我不确定如何正确使用id_token和access_token.或者更确切地说,我对在我的设置中分配给各种服务的角色感到困惑.
我有一个完全静态的前端应用程序(单页面应用程序,HTML + JS,没有后端),可确保使用针对Auth0的隐式流程对用户进行身份验证.然后,前端应用程序从我正在构建的API中获取数据.
现在,哪个是对的?
...要么:
如果我的前端和后端API都可以被认为是客户端,我认为在id_token我的前端到后端的请求中使用持票令牌没有真正的危害- 这很有吸引力,因为那时我可以简单地验证签名后的令牌后端,我有关于我需要的用户的所有信息.但是,如果我的API被认为是资源服务器,我应该使用它access_token,但是我必须在每个API请求上连接到Auth0的服务器以验证令牌,并获得基本的用户信息,不是吗?
我已经读过这个似乎表明它access_token是我的API使用的唯一有效令牌.但就像我说的那样,我不确定个别服务的角色.并且使用它id_token很诱人,因为它在后端不需要网络连接,并且包含提取正确数据所需的信息.
什么是正确的方法?
我有一个用户群,其中包含由keycloak管理的身份和身份验证.我想允许这些用户使用OpenID Connect联合登录并使用Cognito的AWS API网关服务.
有些使用OpenID Connect提供程序的AWS文档有些缺乏.我找到了一个使用SAML 的旧引用,但更愿意避免这种情况并使用OpenID Connect.
如果有人实现了这一点,他们会介意从keycloak管理员角度编写一些简单的指令吗?
amazon-web-services single-sign-on openid-connect amazon-cognito keycloak
我正在构建一个与RESTful API交互的跨平台移动应用程序,我想使用OpenID Connect对我的用户进行身份验证.我将构建自己的OpenID Connect提供程序服务器.
OpenID.net 声称:
OpenID Connect允许所有类型的客户端(包括基于浏览器的JavaScript和本机移动应用程序)启动登录流程并接收有关已登录用户身份的可验证断言.
但是,我找不到任何解释如何为移动应用客户端进行身份验证的文档.
此StackExchange答案清楚地表明OpenID Connect不支持"资源所有者基于密码的授权"流或"客户端凭据"流.
这只留下了"授权代码"流(通常由服务器端应用程序使用)和"隐式授权"流(通常由客户端应用程序使用).这两者似乎都依赖于将用户重定向到提供者的授权端点,并让提供者重定向回客户端URL.我不知道这如何适用于移动应用程序.
任何人都可以向我解释(甚至更好,请指教我或一些示例代码),这解释了如何做到这一点?
澄清一下:OpenID Connect依赖于客户端将用户重定向到授权端点,然后提供者将用户重定向回客户端.在客户端不是Web应用程序的情况下,这怎么可行?
我正在使用Identity Server 4和Implicit Flow,并且想要向访问令牌添加一些声明,新的声明或属性是"tenantId"和"langId".
我已将langId添加为我的范围之一,如下所示,然后通过身份服务器请求,但我也获得了tenantId.怎么会发生这种情况?
这是范围列表和客户端配置:
public IEnumerable<Scope> GetScopes()
{
return new List<Scope>
{
// standard OpenID Connect scopes
StandardScopes.OpenId,
StandardScopes.ProfileAlwaysInclude,
StandardScopes.EmailAlwaysInclude,
new Scope
{
Name="langId",
Description = "Language",
Type= ScopeType.Resource,
Claims = new List<ScopeClaim>()
{
new ScopeClaim("langId", true)
}
},
new Scope
{
Name = "resourceAPIs",
Description = "Resource APIs",
Type= ScopeType.Resource
},
new Scope
{
Name = "security_api",
Description = "Security APIs",
Type= ScopeType.Resource
},
};
}
Run Code Online (Sandbox Code Playgroud)
客户:
return new List<Client>
{
new Client
{
ClientName = "angular2client", …Run Code Online (Sandbox Code Playgroud) c# jwt thinktecture-ident-server openid-connect identityserver4
我以前一直在使用OAuth资源所有者凭据流进行授权.
但是,我现在想考虑使用openid connect进行身份验证和授权,并且想知道openid connect是否支持资源所有者凭据流.
我想将AWS cognito用作OpenId连接提供者.我的AWS cognito IDP将实习调用我的另一个OpenId提供程序来验证用户身份.然后它将创建其新令牌并将其作为自己的代码移交给调用者.
AWS cognito池内部使用的OpenID提供程序对用户是透明的.用户仅将AWS cognito配置为其IDP提供者.
用户案例
题
openid-connect ×10
oauth ×3
asp.net-core ×2
c# ×2
oauth-2.0 ×2
openid ×2
access-token ×1
asp.net-mvc ×1
aws-sdk ×1
jwt ×1
keycloak ×1
mobile ×1