일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- screen
- 아이폰
- 윈도구
- 링크
- 맥
- 퇴사
- cagr48com
- 볼링
- VISTA
- windows7
- WSDL
- install
- 형식
- Objective-C
- 애플
- Number
- iPhone
- Mobile
- 아이맥
- c#
- java
- ObjectiveC
- mac
- 설치
- 윈도우즈7
- 오브젝티브C
- 윈도구7
- windows
- 7932
- WebService
- Today
- Total
A colossal Dreamer: GR鐵塔-天生我材
iOS 10 Keychain Access with entitlement 본문
iOS Keychain Access
담당하고 있던 앱에서 로그인이 풀리는 이슈가 있어서
f/u 해본 내용을 공유하려고 합니다.
앱에서 AccessToken, refreshToken을
키체인에 저장하고 있었습니다.
iOS10 업데이트 이후에 항상 로그인이 풀리는 이슈가 확인되었네요. ㅠㅠ
- 프리징이라지만, 너무 무관심 했어요.. 반성합니다.
디버깅을 해보니까. KeyChain 쪽에서
* -34018 (errSecMissingEntitlement) osStatus *
코드가 떨어지고 있었습니다.
- 문서화되지 않고, 애플개발자포럼에서 확인인 코드입니다.
-34018 코드는 그동안에도 iOS 메이저 업데이트때마다
종종 보이던 넘입니다.
```
- 이전에 프로비져닝(개발계정)으로 서명된 앱을
마켓버전(스토어계정)으로 설치한 경우에도 발생하고요.
- iOS7과 8 에서 키체인쪽 대규모 변경이 있은 후에 몇 달동안
고통받기도 했었죠.
(내부에서 키체인쪽 동작을 시스템프로세스로 옮겼고,
여기서 동기적인 키체인 API 가 내부에서 비동기로 처리되고,
중간 프록시객체가 메모리워닝을 맞으면,
프록시가 날아가서 발생한 것으로 추정됩니다.)
- iOS10 entitlement 가 지정되지 않으면 발생
(iOS10에서 또다시.. !! 자세한 설명은 아래 이어갑니다.)
```
iOS9 까지 KeyChainAccess 는 별도의 entitlement 를 등록하지 않아도,
자기 자신의 bundleID와 APP SeedID 의 조합은 처리되었습니다.
하지만, iOS10 에서는 Xcode8-Target 설정의 Keychain Sharing 을 켜줘야 합니다.
Keychain Sharing 을 사용하지 않더라도, Keychain Access 를 사용하려면,
반드시 entitlement 에 명시되어야하는 것으로 바뀌었습니다.
짧지 않은 삽질의 시간이 끝나고, entitlement 추가한 후에는
잘 동작하네요.
Xcode8 에서 Keychain Sharing 을 켜는 동작만으로는
별도의 developer.apple.com 의 AccessGroup 등의 설정이 변경되지 않습니다.
- AccessGroup 을 추가하거나 하면, 변경을 것이고요.
따라서, iOS10 이후에 Keychain 에서 -34018 osstatus 가 발생하면,
일단 Keychain Sharing을 먼저 켜주시면,
간단히 해결되실 것으로 기대됩니다.
부디 저와 같이 삽질하지 않으시길...
'Development > 아이폰' 카테고리의 다른 글
ObjC Action Delegation(Handling) Cases (0) | 2018.03.29 |
---|---|
애플워치 1세대 -> 3세대 (0) | 2018.02.06 |
[KeyChain] OSStatus -34018 (errSecMissingEntitlement) Issue!! (0) | 2015.08.28 |
철탑만 몰랐던 iOS #6 - (iOS4.2 이상에서 키보드 틱소리 재생 기능 사용하기) (0) | 2014.11.10 |
UIManagedDocument - managedObjectContext (0) | 2014.08.04 |