我们正在开发自定义登录页面。实际上,我们在aspx页面上使用的是Okta Sign In Widget。之所以这样做,是因为我们必须与另一个.NET API库集成。
到目前为止,开箱即用的一切都很好。用户转到页面,显示登录屏幕,登录并获得.aspx页面。
要进一步,我们需要在.aspx页的Page_Load()事件中编写一些代码,以检查用户是否已通过身份验证,如果已通过身份验证,则从Claims集合中提取用户名。完成后,我们将使用其他API进行一些工作,然后重定向到另一个应用程序,并传递从Okta收到的用户名和令牌。
我找不到在Page_Load()事件中如何在C#中获取此信息。
非常感谢您的协助。
最好, x
答案 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客户端,但是我建议您这样做。希望对您有所帮助。