@@ -356,49 +356,6 @@ namespace IRaCIS.Api.Controllers
|
||||
}
|
||||
|
||||
|
||||
#region aliyun-net-sdk-sts 之前
|
||||
//[HttpGet("user/GenerateSTS")]
|
||||
//public IResponseOutput GenerateSTS([FromServices] IOptionsMonitor<AliyunOSSOptions> options)
|
||||
//{
|
||||
// var ossOptions = options.CurrentValue;
|
||||
|
||||
|
||||
// IClientProfile profile = DefaultProfile.GetProfile(ossOptions.regionId, ossOptions.accessKeyId, ossOptions.accessKeySecret);
|
||||
// DefaultAcsClient client = new DefaultAcsClient(profile);
|
||||
|
||||
|
||||
// // 创建一个STS请求
|
||||
// AssumeRoleRequest request = new AssumeRoleRequest
|
||||
// {
|
||||
// RoleArn = ossOptions.roleArn, // 角色ARN,需要替换为你的角色ARN
|
||||
// RoleSessionName = $"session-name-{NewId.NextGuid()}", // 角色会话名称,可自定义
|
||||
// DurationSeconds = 900, // 令牌有效期(单位:秒),这里设置为1小时
|
||||
// };
|
||||
|
||||
|
||||
// AssumeRoleResponse response = client.GetAcsResponse(request);
|
||||
|
||||
// // 返回STS令牌信息给前端
|
||||
// var stsToken = new
|
||||
// {
|
||||
// AccessKeyId = response.Credentials.AccessKeyId,
|
||||
// AccessKeySecret = response.Credentials.AccessKeySecret,
|
||||
// SecurityToken = response.Credentials.SecurityToken,
|
||||
// Expiration = response.Credentials.Expiration,
|
||||
|
||||
// Region = ossOptions.region,
|
||||
// BucketName = ossOptions.bucketName,
|
||||
// ViewEndpoint = ossOptions.viewEndpoint,
|
||||
|
||||
// };
|
||||
|
||||
// return ResponseOutput.Ok(stsToken);
|
||||
|
||||
//}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[HttpGet("User/UserRedirect")]
|
||||
@@ -430,7 +387,34 @@ namespace IRaCIS.Api.Controllers
|
||||
|
||||
|
||||
|
||||
#region 项目支持Oauth 对接修改
|
||||
|
||||
/// <summary>
|
||||
/// 回调到前端,前端调用后端的接口
|
||||
/// 参考链接:https://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html
|
||||
/// 后端通过这个code ,带上客户端信息,和授权类型 可以向单点登录提供商,获取厂商token
|
||||
///
|
||||
/// 但是单点登录提供商提供的token 和我们系统的token 是有区别的,我们的token里面有我们业务系统的UserId,涉及到很多业务操作,所以在此出现了两种方案
|
||||
/// 1、前段使用厂商的Token。 后端通过code 获取厂商的Token 返回前端的同时返回我们系统的UserId,前段在http 请求头加上一个自定义参数,带上UserId 后端取用户Id的地方变动下,
|
||||
/// 但是除了UserId外,后端还有其他信息也是从Token取的,所以在请求头也需要带上,此外后端认证Token的方式也需要变化,改造成本稍大(如果是微服务,做这种处理还是可以的)。
|
||||
/// 2、前段还是使用我们后台自己的Token。后端通过code 获取厂商Token的同时,后端做一个隐藏登录,返回厂商的Token的同时,也返回我们系统的Token。
|
||||
/// (像我们单体,这种方式最简单,我们用单点登录,无非就是不想记多个系统的密码,自动登录而已,其他不支持的项目改造陈本也是最低的)
|
||||
/// </summary>
|
||||
/// <param name="type">回调的厂商类型 比如github, google, 我们用的logto ,不同的厂商回调到前端的地址可以不同的,但是请求后端的接口可以是同一个 </param>
|
||||
/// <param name="code">在第三方平台登录成功后,回调前端的时候会返回一个code </param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("User/OAuthCallBack")]
|
||||
public async Task<IResponseOutput> OAuthCallBack(string type, string code)
|
||||
{
|
||||
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region 测试获取用户 ip
|
||||
[HttpGet, Route("ip")]
|
||||
[AllowAnonymous]
|
||||
public IResponseOutput Get([FromServices] IHttpContextAccessor _context)
|
||||
@@ -471,6 +455,9 @@ namespace IRaCIS.Api.Controllers
|
||||
}
|
||||
return ResponseOutput.Ok(sb.ToString());
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user