Angular和Identity Server 4中的PKCE的OIDC Connect和Auth代码流

时间:2019-05-07 20:00:49

标签: angular openid-connect

我正在为我的Angular应用程序使用angular-auth-oidc-client软件包。我已经在Identity Server 3中使用了很长一段时间,并且在使用“隐式流”时它运行良好。但是,当尝试在Identity Server 4上将Auth Code Flow与PKCE结合使用时,我无法使其正常工作。

我的身份验证服务器客户端的配置如下:

new Client
{
    ClientId = "My.Angular.App",

    // no interactive user, use the clientid/secret for authentication
    AllowedGrantTypes = GrantTypes.Code,

    // secret for authentication
    ClientSecrets = new List<Secret> { ... },

    RedirectUris = new List<string> { ... },

    AllowedScopes = new List<string> { ... },
}

angular-auth-oidc-client的配置如下:

{
    "stsServer": "https://auth2.test.hsahealthplan.com",
    "redirect_url": "...",
    "client_id": "My.Angular.app",
    "response_type": "code",
    "scope": "...",
    "post_logout_redirect_uri": "...",
    "start_checksession": false,
    "silent_renew": true,
    "silent_renew_url": "...",
    "post_login_route": "...",
    "forbidden_route": "...",
    "unauthorized_route": "...",
    "log_console_warning_active": true,
    "log_console_debug_active": false,
    "max_id_token_iat_offset_allowed_in_seconds": 300
}

当我在stsServer设置为https://localhost:5000的情况下在本地运行Identity Server 4时:

https local auth server error

当我在stsServer设置为http://localhost:5000的情况下在本地运行Identity Server 4时:

http local auth server error

当我尝试通过真实的身份验证服务器进行身份验证时,我们还有其他应用程序通过以下身份验证进行身份验证:

auth server error response

我不确定为什么我从auth服务器收到405错误代码,或者为什么它在本地也不起作用。如果有人有任何建议,将不胜感激。

2 个答案:

答案 0 :(得分:0)

IdentityServer实现可能包含与IdentityServer内部CORS服务冲突的CORS中间件(app.UseCors(...))。 应该在Startup.Configure中的app.UseIdentityServer之后调用app.UseCors(...)

答案 1 :(得分:0)

逻辑上,另一台ID4服务器不接受您的请求,因为它没有在其中注册您的应用程序。该ID4服务器不了解客户端信息,因此它将拒绝来自您的应用的请求。

调用https://localhost:5000失败,因为您在某个地方配置了错误的SSL,我无法从提供的信息中清楚地了解到什么地方和方式。调用http://localhost:5000可能失败because you forgot to turn off SSL。也可能是错误配置了CORS,您从应用程序主域以外的其他域请求的每个资源都需要将您的域作为“ access-control-allow-origin”标头中的值。因此,如果您托管在app.com上的应用向ID4.com请求某些内容,则请求的资源需要在“ access-control-allow-origin”标头中包含app.com。