【问题标题】:open auth introspection with okta authentication使用 okta 身份验证打开身份验证内省
【发布时间】:2022-09-29 21:58:11
【问题描述】:

我正在尝试自省从 .net 核心 api 中的 okta 收到的令牌,但不断收到“令牌未激活”。 通过您在下面看到的设置,我可以从令牌中检索身份。(基本 okta 身份验证模式)

service.AddAuthentication(options =>
  {
   options.DefaultAuthenticateScheme = OktaDefaults.ApiAuthenticationScheme;         
   options.DefaultChallengeScheme = OktaDefaults.ApiAuthenticationScheme;
   options.DefaultSignInScheme = OktaDefaults.ApiAuthenticationScheme;
   })
   .AddOktaWebApi(new OktaWebApiOptions()
   {
   OktaDomain = configuration[\"Authentication:Okta:OktaDomain\"],
   AuthorizationServerId = configuration[\"Authentication:Okta:AuthorizationServerId\"],
   Audience = configuration[\"Authentication:Okta:Audience\"]});

但我需要使用 \"Introspection\" 架构设置身份验证,这是我的配置:

service.AddAuthentication(auth =>     
    {
     auth.DefaultAuthenticateScheme = \"Introspection\";
       auth.DefaultChallengeScheme = \"Introspection\";
       auth.DefaultSignInScheme = \"Introspection\";
       })
       .AddOAuth2Introspection(\"Introspection\", options =>
       {
       options.Authority = configuration[\"Authentication:Okta:Authority\"];
       options.ClientId = configuration[\"Authentication:Okta:ClientId\"];     
       options.TokenRetriever = request =>
    
       {
       string token = \"\";                
       if (request.Headers.ContainsKey(\"Authorization\"))
       {                
        var parts = request.Headers[\"Authorization\"].ToString().Split(\" \");
        token = parts[1];
        return token;
       }
            if (request.Query.ContainsKey(\"access_token\"))
            {
                token = request.Query[\"access_token\"];
            }
            if (request.Cookies.ContainsKey(\"access_token\"))
            {
                token = request.Cookies[\"access_token\"];
            }
            return token;
        };
    });

有谁知道可能是什么原因?

    标签: .net vue.js oauth introspection


    【解决方案1】:

    我找到了解决方案。 有一个自省端点IntrospectionOptions 上的属性,您可以在其中指定包括 authenticationServerID 在内的完整路径。 还需要为某些 authServer 添加一点,根本没有 authServID,您可以在指定域(https://domain)的地方使用权限,其余的都由 introspectionHandler 完成

    【讨论】:

      【解决方案2】:

      好的,我找到了问题,但暂时不知道如何解决, 所以后面的 auth 处理程序通过错误的 url 发出请求,它没有指定 默认为查询参数。 它应该是这样的:

      https://domain/oauth2/default/v1/introspect

      但相反,它看起来像这样:

      https://domain/oauth2/v1/introspect

      【讨论】:

      • 请使用您问题上的编辑链接添加其他信息。 Post Answer 按钮应仅用于问题的完整答案。 - From Review
      猜你喜欢
      • 1970-01-01
      • 2021-01-11
      • 2015-02-02
      • 2018-02-24
      • 2015-04-29
      • 2010-10-05
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多