标签: openid-connect

使用 IdentityServer4 时出现“需要代码挑战”

我正在尝试重定向到 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

25
推荐指数
2
解决办法
1万
查看次数

使用ASP.NET Core的应用程序和用户身份验证

任何人都可以向我指出一些好的文档或提供有关实现ASP.NET核心REST API的身份验证和授权的最佳方法的良好信息.我需要首先对应用程序进行身份验证和授权,然后对用户进行身份验证和授权.

理想情况下,我希望能够限制经过身份验证的应用和/或用户可以访问的控制器方法.

我正在考虑使用AspNet.Security.OpenIdConnect.Serverenter进行App身份验证,但我不确定如何最好地执行用户身份验证.也许在不同的端点上为具有不同标头的用户重用OpenIdConnect身份验证以包含用户令牌.

一旦通过身份验证,我就会考虑使用角色基本安全来限制可以访问哪些控制器方法.

这是解决这个问题的正确途径吗?

c# authentication asp.net-mvc openid-connect asp.net-core

22
推荐指数
3
解决办法
5441
查看次数

自定义属性未传递到 AWS Cognito 创建的 ID_TOKEN

用户成功登录后,我无法从 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)

我已经检查了下面的链接,其中包含有关此问题的一些信息,但到目前为止没有任何帮助。

在池创建后添加 Cognito 自定义属性?

如果用户池配置了 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

22
推荐指数
2
解决办法
7343
查看次数

IDX10803:无法创建以获取配置

我的配置有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 …

openid-connect identityserver3

21
推荐指数
4
解决办法
3万
查看次数

关于id_token vs access_token的澄清

我正在使用OIDC和OAuth 2.0(使用Auth0)构建一个系统,我不确定如何正确使用id_tokenaccess_token.或者更确切地说,我对在我的设置中分配给各种服务的角色感到困惑.

我有一个完全静态的前端应用程序(单页面应用程序,HTML + JS,没有后端),可确保使用针对Auth0的隐式流程对用户进行身份验证.然后,前端应用程序从我正在构建的API中获取数据.

现在,哪个是对的?

  • 前端SPA是OAuth 客户端应用程序
  • 我的API服务是OAuth 资源服务器

...要么:

  • 前端和我的API服务都是客户端应用程序

如果我的前端和后端API都可以被认为是客户端,我认为在id_token我的前端到后端的请求中使用持票令牌没有真正的危害- 这很有吸引力,因为那时我可以简单地验证签名后的令牌后端,我有关于我需要的用户的所有信息.但是,如果我的API被认为是资源服务器,我应该使用它access_token,但是我必须在每个API请求上连接到Auth0的服务器以验证令牌,并获得基本的用户信息,不是吗?

我已经读过这个似乎表明它access_token是我的API使用的唯一有效令牌.但就像我说的那样,我不确定个别服务的角色.并且使用它id_token很诱人,因为它在后端不需要网络连接,并且包含提取正确数据所需的信息.

什么是正确的方法?

access-token oauth-2.0 openid-connect

21
推荐指数
2
解决办法
8470
查看次数

如何在Keycloak中创建客户端以与AWS Cognito Identity Federation一起使用

我有一个用户群,其中包含由keycloak管理的身份和身份验证.我想允许这些用户使用OpenID Connect联合登录并使用Cognito的AWS API网关服务.

有些使用OpenID Connect提供程序的AWS文档有些缺乏.我找到了一个使用SAML 的旧引用,但更愿意避免这种情况并使用OpenID Connect.

如果有人实现了这一点,他们会介意从keycloak管理员角度编写一些简单的指令吗?

amazon-web-services single-sign-on openid-connect amazon-cognito keycloak

21
推荐指数
1
解决办法
4042
查看次数

什么是OpenID Connect授权流程来验证移动应用用户?

我正在构建一个与RESTful API交互的跨平台移动应用程序,我想使用OpenID Connect对我的用户进行身份验证.我将构建自己的OpenID Connect提供程序服务器.

OpenID.net 声称:

OpenID Connect允许所有类型的客户端(包括基于浏览器的JavaScript和本机移动应用程序)启动登录流程并接收有关已登录用户身份的可验证断言.

但是,我找不到任何解释如何为移动应用客户端进行身份验证的文档.

此StackExchange答案清楚地表明OpenID Connect不支持"资源所有者基于密码的授权"流或"客户端凭据"流.

这只留下了"授权代码"流(通常由服务器端应用程序使用)和"隐式授权"流(通常由客户端应用程序使用).这两者似乎都依赖于将用户重定向到提供者的授权端点,并让提供者重定向回客户端URL.我不知道这如何适用于移动应用程序.

任何人都可以向我解释(甚至更好,请指教我或一些示例代码),这解释了如何做到这一点?

更新

澄清一下:OpenID Connect依赖于客户端将用户重定向到授权端点,然后提供者将用户重定向回客户端.在客户端不是Web应用程序的情况下,这怎么可行?

openid mobile oauth openid-connect

20
推荐指数
1
解决办法
1万
查看次数

Identity Server 4:向访问令牌添加声明

我正在使用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

20
推荐指数
3
解决办法
3万
查看次数

OpenID Connect是否支持资源所有者密码凭据授予?

我以前一直在使用OAuth资源所有者凭据流进行授权.

但是,我现在想考虑使用openid connect进行身份验证和授权,并且想知道openid connect是否支持资源所有者凭据流.

openid oauth-2.0 thinktecture-ident-server openid-connect

19
推荐指数
2
解决办法
1万
查看次数

我可以使用AWS cognito提供开放ID连接端点吗?

我想将AWS cognito用作OpenId连接提供者.我的AWS cognito IDP将实习调用我的另一个OpenId提供程序来验证用户身份.然后它将创建其新令牌并将其作为自己的代码移交给调用者.

AWS cognito池内部使用的OpenID提供程序对用户是透明的.用户仅将AWS cognito配置为其IDP提供者.

用户案例

  • 用户使用My AWS IDP提供程序进行身份验证
  • 我的IDP提供商再次验证用户Googles IDP提供商
  • 我的IDP解码了Google IDP返回的令牌.
  • 我的IDP创建新令牌并添加其他声明.
  • 我的IDP将我的JWT交给用户.

  • 这可能是AWS cognito吗?
  • AWS用户池是否公开OpenID连接端点?

oauth openid-connect amazon-cognito

19
推荐指数
3
解决办法
6228
查看次数