gpt4 book ai didi

objective-c - iOS MDM : Common key/id for iOS MDM and supporting MDM iOS application

转载 作者:搜寻专家 更新时间:2023-10-30 20:10:22 28 4
gpt4 key购买 nike

我正在研究 MDM 解决方案,但遇到了 UDID 问题。我们有一个 iOS 应用程序作为 iOS MDM 服务器的支持应用程序。这个支持应用程序可以在 iOS 设备使用我们的 MDM 服务器注册 MDM 后启动。

在设备注册中,我们可以在服务器端获取设备 UDID,我们使用此设备 UDID 作为 iOS MDM 和 iOS 支持应用程序的公共(public) key 。要在支持应用程序的 iOS 中使用我们的 MDM 服务器登录,用户必须提供我们使用 API [[UIDevice currentDevice] uniqueIdentifier] 捕获的用户 ID、密码和 UDID,因此对于身份验证,这 3 个参数是必需的。

但是苹果在iOS 5.0中已经弃用了设备UDID,所以我们不能在iOS应用中使用苹果API来获取设备UDID。

现在我们需要一些通用 key ,它在 iOS MDM 证书中可用,我们可以在 iOS 支持应用程序中生成。因此,哪个用户已将 iOS 设备注册到 MDM 服务器,只有该用户才能登录 iOS 支持应用程序。

最佳答案

您也可以使用 wifi mac 地址作为 UDID 的替代。获取 mac 地址的逻辑如下,您可以在支持的 iOS 应用程序中使用它来获取 mac 地址。您可以使用 MDM 命令在服务器端 wifi mac 地址。

//.h文件

#import <Foundation/Foundation.h>

@interface MacAddress : NSObject

+ (NSString *)getMacAddress;

@end

//实现文件

#import "MacAddress.h"
#import <sys/socket.h>
#import <sys/sysctl.h>
#import <net/if.h>
#import <net/if_dl.h>

@implementation MacAddress

+ (NSString *)getMacAddress
{
  int                 mgmtInfoBase[6];
  char                *msgBuffer = NULL;
  size_t              length;
  unsigned char       macAddress[6];
  struct if_msghdr    *interfaceMsgStruct;
  struct sockaddr_dl  *socketStruct;
  NSString            *errorFlag = NULL;

  // Setup the management Information Base (mib)
  mgmtInfoBase[0] = CTL_NET;        // Request network subsystem
  mgmtInfoBase[1] = AF_ROUTE;       // Routing table info
  mgmtInfoBase[2] = 0;              
  mgmtInfoBase[3] = AF_LINK;        // Request link layer information
  mgmtInfoBase[4] = NET_RT_IFLIST;  // Request all configured interfaces

  // With all configured interfaces requested, get handle index
  if ((mgmtInfoBase[5] = if_nametoindex("en0")) == 0)
    errorFlag = @"if_nametoindex failure";
  else
  {
    // Get the size of the data available (store in len)
    if (sysctl(mgmtInfoBase, 6, NULL, &length, NULL, 0) < 0)
      errorFlag = @"sysctl mgmtInfoBase failure";
    else
    {
      // Alloc memory based on above call
      if ((msgBuffer = malloc(length)) == NULL)
        errorFlag = @"buffer allocation failure";
      else
      {
        // Get system information, store in buffer
        if (sysctl(mgmtInfoBase, 6, msgBuffer, &length, NULL, 0) < 0)
          errorFlag = @"sysctl msgBuffer failure";
      }
    }
  }
  // Befor going any further...
  if (errorFlag != NULL)
  {
    NSLog(@"Error: %@", errorFlag);
    return errorFlag;
  }
  // Map msgbuffer to interface message structure
  interfaceMsgStruct = (struct if_msghdr *) msgBuffer;
  // Map to link-level socket structure
  socketStruct = (struct sockaddr_dl *) (interfaceMsgStruct + 1);  
  // Copy link layer address data in socket structure to an array
  memcpy(&macAddress, socketStruct->sdl_data + socketStruct->sdl_nlen, 6);  
  // Read from char array into a string object, into traditional Mac address format
  NSString *macAddressString = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X",
                                macAddress[0], macAddress[1], macAddress[2],
                                macAddress[3], macAddress[4], macAddress[5]];
  //NSLog(@"Mac Address: %@", macAddressString);  
  // Release the buffer memory
  free(msgBuffer);
  return macAddressString;
}

@end

关于objective-c - iOS MDM : Common key/id for iOS MDM and supporting MDM iOS application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204535/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com