ক্রেডিটস্টোর সম্পাদন অনুসন্ধানের ত্রুটি


109

আমার অ্যাপ্লিকেশন ব্যাকএন্ডে এপিআই কল করার সময় আমি একটি সমস্যার মধ্যে চলেছি, প্রতিটি সংযোগ এখনই অনুরোধ জানায়

CredStore - performQuery - Error copying matching creds.  Error=-25300, query={
    atyp = http;
    class = inet;
    "m_Limit" = "m_LimitAll";
    ptcl = http;
    "r_Attributes" = 1;
    srvr = "myappsurl.com";
    sync = syna;
}

আমি কিছুটা হারিয়েছি কারণ আমি নিশ্চিত নই যে এর ফলে কী ঘটছে, বা ক্রেডিস্টোর এমনকি কী করে। আইওএসে ক্রেডিস্টোর কী উদ্দেশ্যে কাজ করে?


আইওএস 11 + এক্সকোড বিটা 6 ব্যবহার করে সিমুলেটারে আমার একই লগ রয়েছে I আমি আশা করি এটি কেবল বিটার
কারণেই হয়েছে

আপনি কি কখনও এর সমাধান খুঁজে পেলেন না?
swalkner

@ সওয়ালকনার এখনও না, আরও অনুসন্ধানের চেষ্টা করছেন।
অ্যান্টনি টেলর

আমি একই সমস্যা আছে। কোন খবর?
আলেকজান্ডার পেরেকনেভ

আপনি কি ভিডিও খেলছেন?
ড্যানিয়েল ঝড়

উত্তর:


34

অজানা জন্য একটি URLCredentialথেকে পুনরুদ্ধার করার চেষ্টা করার সময় এই ত্রুটি ঘটে । যেমনURLCredentialStorageURLProtectionSpace

let protectionSpace = URLProtectionSpace.init(host: host, 
                                              port: port, 
                                              protocol: "http", 
                                              realm: nil, 
                                              authenticationMethod: nil)

var credential: URLCredential? = URLCredentialStorage.shared.defaultCredential(for: protectionSpace)

উত্পাদন করে

CredStore - performQuery - Error copying matching creds.  Error=-25300, query={
    class = inet;
    "m_Limit" = "m_LimitAll";
    ptcl = http;
    "r_Attributes" = 1;
    srvr = host;
    sync = syna;
}

সুরক্ষা স্থানের জন্য এটি একটি শংসাপত্র দিন:

let userCredential = URLCredential(user: user, 
                                   password: password, 
                                   persistence: .permanent)

URLCredentialStorage.shared.setDefaultCredential(userCredential, for: protectionSpace)

আপনি যখন শংসাপত্রটি পুনরুদ্ধার করার চেষ্টা করবেন তখনই ত্রুটিটি চলে যায় away

আমি কিছুটা হারিয়েছি কারণ আমি নিশ্চিত নই যে এর ফলে কী ঘটছে, বা ক্রেডিস্টোর এমনকি কী করে। আইওএসে ক্রেডিস্টোর কী উদ্দেশ্যে কাজ করে?

আইওএস-তে শংসাপত্রের স্টোরেজ ব্যবহারকারীদের অস্থায়ীভাবে বা স্থায়ীভাবে কীচেইনে শংসাপত্র ভিত্তিক বা পাসওয়ার্ড-ভিত্তিক শংসাপত্রগুলি ডিভাইসে সুরক্ষিতভাবে সংরক্ষণ করতে দেয়।

আমি সন্দেহ করি যে আপনার ব্যাকএন্ড সার্ভারে আপনার কোনও ধরণের প্রমাণীকরণ রয়েছে এবং সেই সার্ভারটি আপনার অ্যাপ্লিকেশনটিতে কোনও প্রমাণীকরণ চ্যালেঞ্জের জন্য অনুরোধ করছে (যার জন্য কোনও শংসাপত্রের অস্তিত্ব নেই)।

এটি সম্ভবত নিরাপদে অগ্রাহ্য করা যেতে পারে কারণ এটির থেকে শূন্যস্থান ফিরে আসা URLCredentialStorageএকটি বৈধ প্রতিক্রিয়া


2
আপনি কীভাবে সুরক্ষা স্থান তৈরি করবেন?
টম ফক্স

@ ব্রেট আপনি দয়া করে সুরক্ষাস্পেসের জন্য তথ্য সরবরাহ করতে পারেন?
পাভলোস

2
মোয়া এবং আলমোফায়ারে কীভাবে ব্যবহার করবেন?
পুত্র

1
আমি এই সমস্যা যখন alamofire ব্যবহার আছে stackoverflow.com/questions/50342214/... , আমি যেখানে Alamofire মধ্যে :( userCredential করা জানি না
Alexa289

1
@ ব্রেট, এএফনেটকার্কিংয়ের মাধ্যমে টোভিলিও এপিআই কল করার সময় আমিও এই সমস্যার মুখোমুখি হয়েছি। কোনও পরামর্শ, এএফনেটর্কেটিংয়ের সাথে বিষয়টি দখল করার জন্য কী অনুসন্ধান করবেন?
সুনীতা

8

আমি নিশ্চিত নই যে অ্যালোমোফায়ারের সাথে অনুরোধগুলি সম্পাদন করার সময় আমরা এই ত্রুটিটি কেন পাই তবে আপনি যদি এইচটিটিপি শিরোনামে কিছু টোকেন সহ এপিআই অনুরোধ করেন তবে আপনার সম্ভবত শংসাপত্রের কোনও প্রয়োজন নেই। সুতরাং আমরা আমাদের অনুরোধের জন্য এটি অক্ষম করতে পারি:

let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = ourHeaders
// disable default credential store
configuration.urlCredentialStorage = nil

let manager = Alamofire.SessionManager(configuration: configuration)
...

এই ধরনের পরিবর্তনের পরে কোনও ত্রুটি নেই।


4

এটি পরিবহন ত্রুটি, প্লাস্ট ফাইলের মধ্যে এই জাতীয় পরিবহণের অনুমতি যুক্ত করুন:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

এটি আপনার অ্যাপ্লিকেশন থেকে যে কোনও সার্ভারের সাথে সংযোগ সক্ষম করে তাই সাবধান হন। এগিয়ে যাওয়ার আগে অ্যাপ ট্রান্সপোর্ট সুরক্ষা সম্পর্কে আরও পড়ুন। @Kezi দ্বারা মন্তব্য দেখুন


আমি জানি না কেন এই নিম্নাঞ্চলগুলি হয়, এই সমাধানটি আমাকে সহায়তা করেছিল! আমার FRadioPlayer github.com/fethica/FRadioPlayer
ক্যাফেইনুম

8
@ ক্যাফেইনাম কারন এটি এখন পর্যন্ত যে কোনও সুরক্ষা সরিয়ে দেয়। এটি সফ্টওয়্যারটির পক্ষ থেকে কোনও ত্রুটি নয়। এটি আপনার অ্যাপ্লিকেশনটিতে সুরক্ষার বাধা দেওয়ার জন্য যুক্ত করা হয়েছে। এই উত্তরটি সে সম্পর্কে বা নির্বিচারে বোঝার অর্থ কী সে সম্পর্কে কিছুই জানায় না।
কেজি

অ্যাপলের অ্যাপ পর্যালোচনা সম্ভবত এটি ফ্ল্যাগ করবে এবং আপনাকে জিজ্ঞাসা করা হবে কেন আপনার অ্যাপ্লিকেশনকে স্বেচ্ছাসেবীর সাথে সংযোগ দেওয়া প্রয়োজন। আপনার উত্তরটি পছন্দ না হলে তারা অ্যাপটিকে প্রত্যাখ্যান করতে পারে। আপনি যে নির্দিষ্ট হোস্টনামের সাথে সংযোগের চেষ্টা করছেন তার জন্য একটি কী যুক্ত করা আরও ভাল।
জেনস আলফকে

4

এই একই সমস্যাটি আমার সাথে ঘটে এবং আমি দেখতে পেয়েছি যে যদি আপনার এপিআই URL এ URL এর শেষে "/" থাকে না তবে আইওএস সার্ভারে "অনুমোদন" মান প্রেরণ করে না। যার কারণে আপনি কনসোলে প্রশ্নযুক্ত পোস্টের মতো একটি বার্তা দেখতে পাবেন।

সুতরাং URL এর শেষে কেবল "/" যুক্ত করুন

https://example.com/api/devices/

2

আমি স্ট্রিং সম্পাদনা করেছি যাতে এই সমস্যাটি সমাধানের জন্য URL টি রয়েছে:

var myUrl = "http://myurl.com"
myUrl = myUrl.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)!

let url = URL(string: myUrl)

2

আপনি যদি এই ত্রুটিটি পান, AVPlayer ব্যবহার করার সময়, কেবল মূল থ্রেডে .play () কল করুন


এভিপ্লেয়ারের সাথে - আমি প্লে কল করছি না তবে সম্পদ লোড করছি এবং তারপরে কল করুন, তবে এখনও এই সতর্কতা পেয়েছি।
জনি

2

আমার এই ত্রুটিটি হওয়ার কারণটি ছিল আমার ঘটনাক্রমে "বেয়ারার" এবং আমার অনুমোদনের শিরোনামের মধ্যে টোকেন অ্যাক্সেসের মধ্যে দুটি স্পেস ব্যবহার করার কারণে।

ত্রুটিপূর্ণ:

request.setValue("Bearer  \(accessToken)", forHTTPHeaderField: "Authorization")

সঠিক:

request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")

সাধারণ ভুল, তবে এটি খুঁজতে কিছুটা সময় নিয়েছে।


2

আমার ক্ষেত্রে, আমি এপিআই কী দিয়ে স্ট্রাইপ এসডিকে আরম্ভ করছিলাম না।

        STPPaymentConfiguration.shared().publishableKey = publishableKey

কোনও স্ট্রিপ অপারেশনের ক্ষেত্রে, আমরা ত্রুটি লগটি এটি সহজেই বুঝতে পারি print

        print(error.debugDescription)

1

ঠিক আছে, আমার এই ত্রুটিটি ছিল এবং আমার রুবির সাথে রেল অ্যাপ্লিকেশনটিতে যোগাযোগ করার সময় এটি দীর্ঘ সময় ধরে (বছর) লড়াই করেছিলাম।

গ্রহণযোগ্য উত্তরে বর্ণিত হিসাবে আমার ডিফল্ট শংসাপত্রগুলি সেট আপ ছিল, তবে ত্রুটিটি পেয়েছে এবং শংসাপত্রগুলি সরবরাহ করার জন্য একটি ডিআরসিপচ্যালেনজ প্রতিক্রিয়ার উপর নির্ভর করে চলেছি - ভাগ্যক্রমে এটি প্রায় কাজ হিসাবে কাজ করেছিল।

কিন্ত! আমি সবেমাত্র সমাধান খুঁজে পেয়েছি!

আমি একটি কুঁচকিতে কাজ করছিলাম যে সুরক্ষিত স্পেস ক্ষেত্রগুলি রবি অন রেলস সার্ভার থেকে অনুমোদনের চ্যালেঞ্জের সাথে মেলে না - এবং আমি বাস্তব ক্ষেত্রের দিকে নজর রেখেছিলাম, যা মনে হয় কেবলমাত্র একমাত্র অপরিবর্তিত ছিল।

আমি সার্ভারের প্রতিক্রিয়া শিরোনামগুলি মুদ্রণ করে শুরু করেছি এবং যদিও আমি এগুলি পরীক্ষা করতে সক্ষম হয়েছি তবে তারা ডাব্লুডাব্লুডাব্লু-অনুমোদনের ক্ষেত্রকে অন্তর্ভুক্ত করেনি যা বাস্তব ক্ষেত্রটি অন্তর্ভুক্ত করে।

আমি ভেবেছিলাম এটি হতে পারে কারণ আমার রেলস অ্যাপ্লিকেশনটি রাজ্যটিকে নির্দিষ্ট করে দেয় নি, তাই আমি রেলগুলির দিকে নজর দিতে শুরু করি।

আমি খুঁজে পেয়েছি যে কলটিতে আমি ক্ষেত্রটি নির্দিষ্ট করতে পেরেছি,

authenticate_or_request_with_http_basic

... যা আমি HTTP বেসিক প্রমাণীকরণের জন্য ব্যবহার করছি।

আমি ইতিমধ্যে কোনও রাজ্যের উল্লেখ করছিলাম না, তাই একটি যুক্ত করা হয়েছে,

authenticate_or_request_with_http_basic("My Rails App")

আমি সুরক্ষাস্পেসে সংশ্লিষ্ট স্ট্রিং যুক্ত করেছি,

NSURLProtectionSpace *protectionSpace =
    [[NSURLProtectionSpace alloc] initWithHost:@"myrailsapp.com"
        port:443
        protocol:NSURLProtectionSpaceHTTPS
        realm:@"My Rails App"
        authenticationMethod:NSURLAuthenticationMethodHTTPBasic];

ভাল খবর! এটি কাজ করেছে, এবং আমি আর পাই না,

CredStore - performQuery - Error copying matching creds.  Error=-25300

এমনকি রেলস অ্যাপে রাজ্যটি নির্দিষ্ট করার পরেও, এখনও আমি এটি HTTP শিরোনামে পাস হতে দেখছি না, আমি জানি না কেন, তবে কমপক্ষে এটি কার্যকর হয়।


1
আপনার উত্তরটি পেয়ে খুব আনন্দিত, এটি আমাকে সত্যই প্রকাশ করেছিল।
গ্রাগণ

0

ত্রুটিটি কোনও বিষয়বস্তু সুরক্ষা নীতি (সিএসপি) দ্বারাও হতে পারে যা খুব সীমাবদ্ধ হতে পারে। আমাদের ক্ষেত্রে, আমাদের একটি সিএসপি দরকার যা কমবেশি সম্পূর্ণ উন্মুক্ত এবং সবকিছুর অনুমতি দেয়। মনে রাখবেন যে সিএসপি খোলার একটি দুর্দান্ত সুরক্ষা সমস্যা হতে পারে (আপনি অ্যাপটিতে ঠিক কী করছেন তার উপর নির্ভর করে)।


0

আমি যখন একটি ওয়েব-ভিউয়ের ভিতরে একটি http-পৃষ্ঠা খোলার চেষ্টা করেছি তখন আমি এই সমস্যাটি পেয়েছি। তবে এই পৃষ্ঠায় একটি পপআপ রয়েছে যা প্রথমে খোলা হয়েছিল।

যখন ব্যাকএন্ড দল এই পপআপটি সরিয়ে দেয় তখন সবকিছু ঠিক হয়ে যায়।


-1
    let credentialData = "\(user):\(password)".data(using: String.Encoding.utf8)!
    let base64Credentials = credentialData.base64EncodedString(options: [])
    let headers = ["Authorization": "Basic \(base64Credentials)"]
    Alamofire.request(url, method: .get, parameters: params,encoding: URLEncoding.default,headers: headers)
                .responseJSON{
            response in
            guard let value =  response.result.value else {return}
                    print(value)
     }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.