OKTA-从C#Load_Page方法中的配置文件声明中获取用户名

时间:2018-09-12 03:00:09

标签: .net okta okta-api

我们正在开发自定义登录页面。实际上,我们在aspx页面上使用的是Okta Sign In Widget。之所以这样做,是因为我们必须与另一个.NET API库集成。

到目前为止,开箱即用的一切都很好。用户转到页面,显示登录屏幕,登录并获得.aspx页面。

要进一步,我们需要在.aspx页的Page_Load()事件中编写一些代码,以检查用户是否已通过身份验证,如果已通过身份验证,则从Claims集合中提取用户名。完成后,我们将使用其他API进行一些工作,然后重定向到另一个应用程序,并传递从Okta收到的用户名和令牌。

我找不到在Page_Load()事件中如何在C#中获取此信息。

非常感谢您的协助。

最好, x

1 个答案:

答案 0 :(得分:0)

您需要OKTA SDK-https://github.com/okta/okta-sdk-dotnet

要验证用户/请求,请将从登录小部件获得的access_token传递为Authorization标头。 API应该检查此授权标头。例如,这是我的.NETCore Startup.cs:

public void ConfigureServices(...) {
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
      .AddJwtBearer(options =>
      {
        options.Authority = <your_authorization_url>;
        options.Audience = <your_api_audience>;
      });
   ...
}

public void Configure(...) {
    ...
    app.UseAuthentication()
    ...
}

然后,您可以使用OKTA Client GetUser来检索服务中的用户个人资料。

public class MyService {
  ...
  public void GetUser(string userId) {
    var client = new OktaClient(new OktaClientConfiguration
    {
       OktaDomain = <your_okta_domain>,
       Token = <okta_api_key>
    });
    var user = await client.Users.GetUserAsync(userId);
  }
}

您可以使用没有身份验证的OKTA客户端,但是我建议您这样做。希望对您有所帮助。