我们正在开发自定义登录页面。实际上,我们在aspx页面上使用Okta Sign In Widget。我们之所以这样做是因为我们必须与另一个.NET API库集成。
到目前为止,开箱即用的一切都很棒。用户转到页面,显示登录屏幕,登录并给出.aspx页面。
为了更进一步,我们需要在.aspx页面的Page_Load()事件中编写一些代码,以检查用户是否经过身份验证,如果是,则从声明集合中提取用户名。完成后,我们将使用其他API执行一些操作,然后重定向到另一个应用程序,传递用户名和从Okta收到的令牌。
我没有找到如何在Page_Load()事件中使用C#获取此信息。
非常感谢任何帮助。
最好的,x
你需要OKTA SDK - https://github.com/okta/okta-sdk-dotnet。
要对用户/请求进行身份验证,请将从登录窗口小部件获取的access_token作为授权标头传递。 API应该检查此Authorization标头。例如,这是我的.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客户端,但我建议您应该这样做。希望你觉得它有用。