Exemplo n.º 1
0
 /// <summary>
 ///  运营后台获取应用详情
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public async Task <AppDetailResponse> AppDetail(AppDetailRequest request)
 {
     return(await new AppDetailExecutor().Client(this).Execute <AppDetailResponse, AppDetailResult, AppDetailRequest>(request).ConfigureAwait(false));
 }
Exemplo n.º 2
0
        public override async Task <AppDetailReply> GetAppDetails(AppDetailRequest request, ServerCallContext context)
        {
            AuthApp app = await _authDbContext.AuthApp
                          .Include(a => a.LdapAppSettings)
                          .Include(a => a.UserGroups)
                          .Include(a => a.LdapAppSettings)
                          .Include(a => a.OidcAppSettings)
                          .Include(a => a.ProxyAppSettings)
                          .Include(a => a.ScimAppSettings)
                          .SingleAsync(f => f.Id == new Guid(request.Id));

            AppDetailReply reply = new AppDetailReply
            {
                Id          = app.Id.ToString(),
                Name        = app.Name,
                Description = app.Description,
                Url         = app.Url,
            };

            switch (app.DirectoryMethod)
            {
            case AuthApp.DirectoryMethodEnum.NONE:
                break;

            case AuthApp.DirectoryMethodEnum.LDAP:
                reply.LdapDirectorySetting = new AppDetailReply.Types.LdapDirectorySetting
                {
                    BaseDn   = app.LdapAppSettings.BaseDn,
                    Password = _ldapSettingsDataProtector.Unprotect(app.LdapAppSettings.BindUserPassword),
                    Username = app.LdapAppSettings.BindUser,
                };
                break;

            case AuthApp.DirectoryMethodEnum.SCIM:
                reply.ScimDirectorySetting = new AppDetailReply.Types.ScimDirectorySetting
                {
                    Credentials = app.ScimAppSettings.Credentials,
                    Endpoint    = app.ScimAppSettings.Endpoint,
                };
                break;
            }

            switch (app.HostingType)
            {
            case AuthApp.HostingTypeEnum.WEB_GENERIC:
                reply.HostingType = HostingType.WebGeneric;
                break;

            case AuthApp.HostingTypeEnum.WEB_GATEKEEPER_PROXY:
                reply.HostingType      = HostingType.WebGatekeeperProxy;
                reply.ProxyAuthSetting = new AppDetailReply.Types.ProxyAuthSetting
                {
                    InternalHostname = app.ProxyAppSettings.InternalHostname,
                    PublicHostname   = app.ProxyAppSettings.PublicHostname,
                };
                if (app.ProxyAppSettings.EndpointsWithoutAuth != null)
                {
                    reply.ProxyAuthSetting.PublicEndpoints.AddRange(app.ProxyAppSettings.EndpointsWithoutAuth);
                }
                break;

            case AuthApp.HostingTypeEnum.NON_WEB:
                reply.HostingType = HostingType.NonWeb;
                break;
            }

            switch (app.AuthMethod)
            {
            case AuthApp.AuthMethodEnum.LDAP:
                reply.LdapAuthSetting = new AppDetailReply.Types.LdapAuthSetting
                {
                    BaseDn = app.LdapAppSettings.BaseDn,
                };
                break;

            case AuthApp.AuthMethodEnum.OIDC:
                reply.OidcAuthSetting = new AppDetailReply.Types.OidcAuthSetting
                {
                    ClientId     = app.OidcAppSettings.ClientId,
                    ClientSecret = app.OidcAppSettings.ClientSecret,
                    RedirectUri  = app.OidcAppSettings.RedirectUrl,
                };
                break;
            }

            foreach (UserGroup group in app.UserGroups)
            {
                GrantedAppGroup appGroup = new GrantedAppGroup
                {
                    Id   = group.Id.ToString(),
                    Name = group.Name,
                };
                reply.Groups.Add(appGroup);
            }

            return(reply);
        }
Exemplo n.º 3
0
 /// <summary>
 ///  运营后台获取应用详情
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public AppDetailResponse AppDetail(AppDetailRequest request)
 {
     return(new AppDetailExecutor().Client(this).Execute <AppDetailResponse, AppDetailResult, AppDetailRequest>(request));
 }